agim-cli 1.2.68 → 1.2.69
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/CHANGELOG.md +46 -0
- package/dist/core/onboarding.d.ts.map +1 -1
- package/dist/core/onboarding.js +10 -4
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/registry.d.ts +10 -0
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +58 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/web/public/assets/{a2a-D5jnlU3x.js → a2a-CzOCrC9J.js} +2 -2
- package/dist/web/public/assets/{a2a-D5jnlU3x.js.map → a2a-CzOCrC9J.js.map} +1 -1
- package/dist/web/public/assets/{activity-Ch5O6khO.js → activity-BlasCFZq.js} +2 -2
- package/dist/web/public/assets/{activity-Ch5O6khO.js.map → activity-BlasCFZq.js.map} +1 -1
- package/dist/web/public/assets/{admins-_M1ylhz4.js → admins-CQOShfRl.js} +2 -2
- package/dist/web/public/assets/{admins-_M1ylhz4.js.map → admins-CQOShfRl.js.map} +1 -1
- package/dist/web/public/assets/{agents-ixbQiOsI.js → agents-UstP4DoK.js} +2 -2
- package/dist/web/public/assets/{agents-ixbQiOsI.js.map → agents-UstP4DoK.js.map} +1 -1
- package/dist/web/public/assets/{approvals-BrAHLmtR.js → approvals-BvfcdYLU.js} +2 -2
- package/dist/web/public/assets/{approvals-BrAHLmtR.js.map → approvals-BvfcdYLU.js.map} +1 -1
- package/dist/web/public/assets/{asks-DSSkZWYd.js → asks-DAJ1edZu.js} +2 -2
- package/dist/web/public/assets/{asks-DSSkZWYd.js.map → asks-DAJ1edZu.js.map} +1 -1
- package/dist/web/public/assets/{audit-CgOnCOYX.js → audit-CAOadRDl.js} +2 -2
- package/dist/web/public/assets/{audit-CgOnCOYX.js.map → audit-CAOadRDl.js.map} +1 -1
- package/dist/web/public/assets/{bell-DAEjZGtn.js → bell-BuZoWBMK.js} +2 -2
- package/dist/web/public/assets/{bell-DAEjZGtn.js.map → bell-BuZoWBMK.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-B9KPxiJl.js → bgjobs-C5jF3BWG.js} +2 -2
- package/dist/web/public/assets/{bgjobs-B9KPxiJl.js.map → bgjobs-C5jF3BWG.js.map} +1 -1
- package/dist/web/public/assets/{brain-D7iZGtff.js → brain-DaFGi4GZ.js} +2 -2
- package/dist/web/public/assets/{brain-D7iZGtff.js.map → brain-DaFGi4GZ.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-DVifKdtB.js → briefcase-BXKiYFAz.js} +2 -2
- package/dist/web/public/assets/{briefcase-DVifKdtB.js.map → briefcase-BXKiYFAz.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-ES5OLdHR.js → chevron-right-Bi2RmsHt.js} +2 -2
- package/dist/web/public/assets/{chevron-right-ES5OLdHR.js.map → chevron-right-Bi2RmsHt.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-B56tPP-z.js → circle-check-NYJSuZMK.js} +2 -2
- package/dist/web/public/assets/{circle-check-B56tPP-z.js.map → circle-check-NYJSuZMK.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-krrxgPiD.js → circle-check-big-wxQV9Apf.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-krrxgPiD.js.map → circle-check-big-wxQV9Apf.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-D6zUfmKm.js → circle-x-D7EpTdJQ.js} +2 -2
- package/dist/web/public/assets/{circle-x-D6zUfmKm.js.map → circle-x-D7EpTdJQ.js.map} +1 -1
- package/dist/web/public/assets/{confirm-dialog-Dw9H-rCY.js → confirm-dialog-BecM1NAT.js} +2 -2
- package/dist/web/public/assets/{confirm-dialog-Dw9H-rCY.js.map → confirm-dialog-BecM1NAT.js.map} +1 -1
- package/dist/web/public/assets/{data-table-CTpyjb3w.js → data-table-Bh5TFhXw.js} +2 -2
- package/dist/web/public/assets/{data-table-CTpyjb3w.js.map → data-table-Bh5TFhXw.js.map} +1 -1
- package/dist/web/public/assets/{dialog-C65YjHki.js → dialog-8m5Uihhi.js} +2 -2
- package/dist/web/public/assets/{dialog-C65YjHki.js.map → dialog-8m5Uihhi.js.map} +1 -1
- package/dist/web/public/assets/{download-DsbMB1e1.js → download-DWvNllY2.js} +2 -2
- package/dist/web/public/assets/{download-DsbMB1e1.js.map → download-DWvNllY2.js.map} +1 -1
- package/dist/web/public/assets/{email-CUJkdRDB.js → email-Cr1x3fdt.js} +2 -2
- package/dist/web/public/assets/{email-CUJkdRDB.js.map → email-Cr1x3fdt.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-Cm17gTVv.js → empty-state-BESUGVnV.js} +2 -2
- package/dist/web/public/assets/{empty-state-Cm17gTVv.js.map → empty-state-BESUGVnV.js.map} +1 -1
- package/dist/web/public/assets/{external-link-e4jSLO58.js → external-link-BwscsXby.js} +2 -2
- package/dist/web/public/assets/{external-link-e4jSLO58.js.map → external-link-BwscsXby.js.map} +1 -1
- package/dist/web/public/assets/{eye-CooHmujZ.js → eye-C7gaSIZv.js} +2 -2
- package/dist/web/public/assets/{eye-CooHmujZ.js.map → eye-C7gaSIZv.js.map} +1 -1
- package/dist/web/public/assets/{facts-DynPEPya.js → facts-B9hm9627.js} +2 -2
- package/dist/web/public/assets/{facts-DynPEPya.js.map → facts-B9hm9627.js.map} +1 -1
- package/dist/web/public/assets/{goals-t0vB4Tfm.js → goals-D3f1Dw2M.js} +2 -2
- package/dist/web/public/assets/{goals-t0vB4Tfm.js.map → goals-D3f1Dw2M.js.map} +1 -1
- package/dist/web/public/assets/{health-B6Nf5nrQ.js → health-BLwrXebg.js} +2 -2
- package/dist/web/public/assets/{health-B6Nf5nrQ.js.map → health-BLwrXebg.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-D167fJJk.js → heart-pulse-BtioxtCU.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-D167fJJk.js.map → heart-pulse-BtioxtCU.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-mUU1PBDP.js → heartbeat-BHPx1z33.js} +2 -2
- package/dist/web/public/assets/{heartbeat-mUU1PBDP.js.map → heartbeat-BHPx1z33.js.map} +1 -1
- package/dist/web/public/assets/{hot-BSPUd7sX.js → hot-CuaGMYzV.js} +2 -2
- package/dist/web/public/assets/{hot-BSPUd7sX.js.map → hot-CuaGMYzV.js.map} +1 -1
- package/dist/web/public/assets/{index-DG_LHVpy.js → index-Cc8hxJWT.js} +4 -4
- package/dist/web/public/assets/{index-DG_LHVpy.js.map → index-Cc8hxJWT.js.map} +1 -1
- package/dist/web/public/assets/{installed-BsoeXLFx.js → installed-D_BoGzel.js} +2 -2
- package/dist/web/public/assets/{installed-BsoeXLFx.js.map → installed-D_BoGzel.js.map} +1 -1
- package/dist/web/public/assets/{jobs-HxUYTICT.js → jobs-D0eeD9ye.js} +2 -2
- package/dist/web/public/assets/{jobs-HxUYTICT.js.map → jobs-D0eeD9ye.js.map} +1 -1
- package/dist/web/public/assets/{layout-IkZ1uemn.js → layout-CQe9ncYF.js} +2 -2
- package/dist/web/public/assets/{layout-IkZ1uemn.js.map → layout-CQe9ncYF.js.map} +1 -1
- package/dist/web/public/assets/{layout-C_hnc_UF.js → layout-CvRW3Bn_.js} +2 -2
- package/dist/web/public/assets/{layout-C_hnc_UF.js.map → layout-CvRW3Bn_.js.map} +1 -1
- package/dist/web/public/assets/{layout-7GnGj0lA.js → layout-DPxfAgBW.js} +2 -2
- package/dist/web/public/assets/{layout-7GnGj0lA.js.map → layout-DPxfAgBW.js.map} +1 -1
- package/dist/web/public/assets/{layout-Cgu_PEw0.js → layout-Wl7Pr1-s.js} +2 -2
- package/dist/web/public/assets/{layout-Cgu_PEw0.js.map → layout-Wl7Pr1-s.js.map} +1 -1
- package/dist/web/public/assets/{layout-CvOpVhvp.js → layout-bRkGiGF-.js} +2 -2
- package/dist/web/public/assets/{layout-CvOpVhvp.js.map → layout-bRkGiGF-.js.map} +1 -1
- package/dist/web/public/assets/{llm-B2y8oyog.js → llm-CJGxq9Ru.js} +2 -2
- package/dist/web/public/assets/{llm-B2y8oyog.js.map → llm-CJGxq9Ru.js.map} +1 -1
- package/dist/web/public/assets/{loader-circle-DPuvakPP.js → loader-circle-D4WrM89N.js} +2 -2
- package/dist/web/public/assets/{loader-circle-DPuvakPP.js.map → loader-circle-D4WrM89N.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-DzrzVdfp.js → map-pin-DGSzw_UH.js} +2 -2
- package/dist/web/public/assets/{map-pin-DzrzVdfp.js.map → map-pin-DGSzw_UH.js.map} +1 -1
- package/dist/web/public/assets/{mcp-BvjO6Qxb.js → mcp-DYp7QbX8.js} +2 -2
- package/dist/web/public/assets/{mcp-BvjO6Qxb.js.map → mcp-DYp7QbX8.js.map} +1 -1
- package/dist/web/public/assets/{memos-bmjNc9qk.js → memos-Dz0jD4R5.js} +2 -2
- package/dist/web/public/assets/{memos-bmjNc9qk.js.map → memos-Dz0jD4R5.js.map} +1 -1
- package/dist/web/public/assets/{messengers-B5GHoXqI.js → messengers-Bewhby2_.js} +2 -2
- package/dist/web/public/assets/{messengers-B5GHoXqI.js.map → messengers-Bewhby2_.js.map} +1 -1
- package/dist/web/public/assets/{native-agent-yRX-IBe1.js → native-agent-ChgK3ceB.js} +2 -2
- package/dist/web/public/assets/{native-agent-yRX-IBe1.js.map → native-agent-ChgK3ceB.js.map} +1 -1
- package/dist/web/public/assets/{network-Dac8A7p-.js → network-D8uD8vuE.js} +2 -2
- package/dist/web/public/assets/{network-Dac8A7p-.js.map → network-D8uD8vuE.js.map} +1 -1
- package/dist/web/public/assets/{outbox-Dx_FvKMP.js → outbox-CRcmD2P1.js} +2 -2
- package/dist/web/public/assets/{outbox-Dx_FvKMP.js.map → outbox-CRcmD2P1.js.map} +1 -1
- package/dist/web/public/assets/{pagination-D9B2d2q0.js → pagination-BK8pXuOn.js} +2 -2
- package/dist/web/public/assets/{pagination-D9B2d2q0.js.map → pagination-BK8pXuOn.js.map} +1 -1
- package/dist/web/public/assets/{persona-BXKRIYXm.js → persona-Dk4Y24TF.js} +2 -2
- package/dist/web/public/assets/{persona-BXKRIYXm.js.map → persona-Dk4Y24TF.js.map} +1 -1
- package/dist/web/public/assets/{play-BUdq9hBS.js → play-BAwY0kZY.js} +2 -2
- package/dist/web/public/assets/{play-BUdq9hBS.js.map → play-BAwY0kZY.js.map} +1 -1
- package/dist/web/public/assets/{plus-CuVC2G0S.js → plus-Qg7H_hBC.js} +2 -2
- package/dist/web/public/assets/{plus-CuVC2G0S.js.map → plus-Qg7H_hBC.js.map} +1 -1
- package/dist/web/public/assets/{policy-D3lhzoun.js → policy-bd1_X4KT.js} +2 -2
- package/dist/web/public/assets/{policy-D3lhzoun.js.map → policy-bd1_X4KT.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-KVbKtjsH.js → refresh-ccw-DjeeSzbz.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-KVbKtjsH.js.map → refresh-ccw-DjeeSzbz.js.map} +1 -1
- package/dist/web/public/assets/{reminders-CGyUyQBl.js → reminders-CyNYrPCo.js} +2 -2
- package/dist/web/public/assets/{reminders-CGyUyQBl.js.map → reminders-CyNYrPCo.js.map} +1 -1
- package/dist/web/public/assets/{save-CXEX7AiY.js → save-B6_ssx8c.js} +2 -2
- package/dist/web/public/assets/{save-CXEX7AiY.js.map → save-B6_ssx8c.js.map} +1 -1
- package/dist/web/public/assets/{schedules-lWx5lIO-.js → schedules-DVxENvba.js} +2 -2
- package/dist/web/public/assets/{schedules-lWx5lIO-.js.map → schedules-DVxENvba.js.map} +1 -1
- package/dist/web/public/assets/{search-BxQJVSx8.js → search-BJwBDf0Q.js} +2 -2
- package/dist/web/public/assets/{search-BxQJVSx8.js.map → search-BJwBDf0Q.js.map} +1 -1
- package/dist/web/public/assets/security-Co1823U6.js +7 -0
- package/dist/web/public/assets/security-Co1823U6.js.map +1 -0
- package/dist/web/public/assets/{service-B5Xmuldn.js → service-BJ2kE446.js} +2 -2
- package/dist/web/public/assets/{service-B5Xmuldn.js.map → service-BJ2kE446.js.map} +1 -1
- package/dist/web/public/assets/{status-badge-MM6M-eFF.js → status-badge-3nnQTZXz.js} +2 -2
- package/dist/web/public/assets/{status-badge-MM6M-eFF.js.map → status-badge-3nnQTZXz.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-B6MyfzRw.js → subtasks-BgHm-5dB.js} +2 -2
- package/dist/web/public/assets/{subtasks-B6MyfzRw.js.map → subtasks-BgHm-5dB.js.map} +1 -1
- package/dist/web/public/assets/{table-DCYYH-Yk.js → table-CNXI0HD-.js} +2 -2
- package/dist/web/public/assets/{table-DCYYH-Yk.js.map → table-CNXI0HD-.js.map} +1 -1
- package/dist/web/public/assets/{topn-CaRu8cFq.js → topn-C1PyG8Ns.js} +2 -2
- package/dist/web/public/assets/{topn-CaRu8cFq.js.map → topn-C1PyG8Ns.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-BC232qKU.js → trash-2-CjkttCxU.js} +2 -2
- package/dist/web/public/assets/{trash-2-BC232qKU.js.map → trash-2-CjkttCxU.js.map} +1 -1
- package/dist/web/public/assets/{use-background-tasks-B8Glf2JM.js → use-background-tasks-CLf78_yn.js} +2 -2
- package/dist/web/public/assets/{use-background-tasks-B8Glf2JM.js.map → use-background-tasks-CLf78_yn.js.map} +1 -1
- package/dist/web/public/assets/{use-llm-admin-DM34gUYq.js → use-llm-admin-CzL0zcIi.js} +2 -2
- package/dist/web/public/assets/{use-llm-admin-DM34gUYq.js.map → use-llm-admin-CzL0zcIi.js.map} +1 -1
- package/dist/web/public/assets/{use-memory-BDlIEEfk.js → use-memory-DrJjdPYo.js} +2 -2
- package/dist/web/public/assets/{use-memory-BDlIEEfk.js.map → use-memory-DrJjdPYo.js.map} +1 -1
- package/dist/web/public/assets/{use-observability-D7ePifSS.js → use-observability-1j7-vMy5.js} +2 -2
- package/dist/web/public/assets/{use-observability-D7ePifSS.js.map → use-observability-1j7-vMy5.js.map} +1 -1
- package/dist/web/public/assets/{use-settings-D6y3lscb.js → use-settings-BLcy2mrv.js} +2 -2
- package/dist/web/public/assets/{use-settings-D6y3lscb.js.map → use-settings-BLcy2mrv.js.map} +1 -1
- package/dist/web/public/assets/{use-workspace-C9WiGclY.js → use-workspace-BLXvLTDF.js} +2 -2
- package/dist/web/public/assets/{use-workspace-C9WiGclY.js.map → use-workspace-BLXvLTDF.js.map} +1 -1
- package/dist/web/public/assets/{useQuery-D6icKl-l.js → useQuery-xB5dCeu-.js} +2 -2
- package/dist/web/public/assets/{useQuery-D6icKl-l.js.map → useQuery-xB5dCeu-.js.map} +1 -1
- package/dist/web/public/assets/{vector-DgyB8_1O.js → vector-EOjQsr7r.js} +2 -2
- package/dist/web/public/assets/{vector-DgyB8_1O.js.map → vector-EOjQsr7r.js.map} +1 -1
- package/dist/web/public/assets/{viewer-D6Lc51GN.js → viewer-D_I2ikzf.js} +2 -2
- package/dist/web/public/assets/{viewer-D6Lc51GN.js.map → viewer-D_I2ikzf.js.map} +1 -1
- package/dist/web/public/assets/{workspace-BB3GxkMv.js → workspace-lMCzYJAB.js} +2 -2
- package/dist/web/public/assets/{workspace-BB3GxkMv.js.map → workspace-lMCzYJAB.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-DeZZzq6K.js → workspaces-Ciyjiowm.js} +2 -2
- package/dist/web/public/assets/{workspaces-DeZZzq6K.js.map → workspaces-Ciyjiowm.js.map} +1 -1
- package/dist/web/public/assets/{x-CwtxXdNl.js → x-DP0VnoG9.js} +2 -2
- package/dist/web/public/assets/{x-CwtxXdNl.js.map → x-DP0VnoG9.js.map} +1 -1
- package/dist/web/public/index.html +1 -1
- package/dist/web/server.js +24 -5
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/public/assets/security-DBfcNVw-.js +0 -7
- package/dist/web/public/assets/security-DBfcNVw-.js.map +0 -1
package/dist/web/server.js
CHANGED
|
@@ -1509,17 +1509,29 @@ async function handleGetConfig(_req, res) {
|
|
|
1509
1509
|
const { isGlobalImEnabled, isRemoteAgentEnabled } = await import('../core/feature-flags.js');
|
|
1510
1510
|
const showGlobalIm = isGlobalImEnabled();
|
|
1511
1511
|
const showRemoteAgent = isRemoteAgentEnabled();
|
|
1512
|
+
// v1.2.69 — IM platform blacklist. When an operator sets
|
|
1513
|
+
// IMHUB_PLATFORM_BLACKLIST=telegram,discord (etc.), those platforms
|
|
1514
|
+
// are hidden from the admin SPA entirely — credentials still live
|
|
1515
|
+
// on disk but the UI shows nothing for that platform AND the
|
|
1516
|
+
// registry refuses to register the adapter at boot. Default empty.
|
|
1517
|
+
const { isPlatformBlacklisted: blocked } = await import('../core/registry.js');
|
|
1518
|
+
// v1.2.69 — strip blacklisted entries from the `messengers`
|
|
1519
|
+
// dictionary so the SPA's per-platform toggle row also vanishes
|
|
1520
|
+
// (rendered from this object's keys).
|
|
1521
|
+
const visibleMessengers = config.messengers
|
|
1522
|
+
? Object.fromEntries(Object.entries(config.messengers).filter(([k]) => !blocked(k)))
|
|
1523
|
+
: config.messengers;
|
|
1512
1524
|
sendJson(res, 200, {
|
|
1513
|
-
messengers:
|
|
1525
|
+
messengers: visibleMessengers,
|
|
1514
1526
|
agents: config.agents,
|
|
1515
1527
|
defaultAgent: config.defaultAgent,
|
|
1516
|
-
telegram: showGlobalIm && config.telegram
|
|
1528
|
+
telegram: showGlobalIm && config.telegram && !blocked('telegram')
|
|
1517
1529
|
? { botToken: mask(config.telegram.botToken), channelId: config.telegram.channelId }
|
|
1518
1530
|
: undefined,
|
|
1519
|
-
feishu: config.feishu
|
|
1531
|
+
feishu: config.feishu && !blocked('feishu')
|
|
1520
1532
|
? { appId: config.feishu.appId, appSecret: mask(config.feishu.appSecret) }
|
|
1521
1533
|
: undefined,
|
|
1522
|
-
dingtalk: config.dingtalk
|
|
1534
|
+
dingtalk: config.dingtalk && !blocked('dingtalk')
|
|
1523
1535
|
? {
|
|
1524
1536
|
clientId: config.dingtalk.clientId,
|
|
1525
1537
|
clientSecret: mask(config.dingtalk.clientSecret),
|
|
@@ -1543,7 +1555,7 @@ async function handleGetConfig(_req, res) {
|
|
|
1543
1555
|
: undefined,
|
|
1544
1556
|
}
|
|
1545
1557
|
: undefined,
|
|
1546
|
-
discord: showGlobalIm && config.discord
|
|
1558
|
+
discord: showGlobalIm && config.discord && !blocked('discord')
|
|
1547
1559
|
? {
|
|
1548
1560
|
botToken: mask(config.discord.botToken),
|
|
1549
1561
|
channelId: config.discord.channelId,
|
|
@@ -2686,6 +2698,10 @@ const ENV_EDITABLE_KEYS = [
|
|
|
2686
2698
|
'IMHUB_EXEC_MAX_OUTPUT',
|
|
2687
2699
|
// Native call_agent per-turn cap.
|
|
2688
2700
|
'IMHUB_NATIVE_CALL_AGENT_MAX_PER_TURN',
|
|
2701
|
+
// v1.2.69 — IM platform blacklist (CSV of platform ids). Default
|
|
2702
|
+
// empty (no blocks); listed platforms vanish from web + CLI + are
|
|
2703
|
+
// refused at registry.registerMessenger.
|
|
2704
|
+
'IMHUB_PLATFORM_BLACKLIST',
|
|
2689
2705
|
];
|
|
2690
2706
|
const SECRET_KEYS = new Set(['IMHUB_SMTP_PASS', 'IMHUB_BAIDU_MAP_AK', 'IMHUB_MEMORY_VECTOR_OPENAI_API_KEY']);
|
|
2691
2707
|
// maskSecret moved to ./env-mask.ts (imported at the top of this file
|
|
@@ -2720,6 +2736,8 @@ async function handleSecurityDiagnostics(_req, res) {
|
|
|
2720
2736
|
const senderAllowlistConfigured = isSenderAllowlistConfigured();
|
|
2721
2737
|
const { isAllowlistConfigured: isAdminConfigured } = await import('../core/admin-allowlist.js');
|
|
2722
2738
|
const adminAllowlistConfigured = isAdminConfigured();
|
|
2739
|
+
const { getPlatformBlacklist } = await import('../core/registry.js');
|
|
2740
|
+
const platformBlacklist = getPlatformBlacklist();
|
|
2723
2741
|
sendJson(res, 200, {
|
|
2724
2742
|
diagnostics: {
|
|
2725
2743
|
runningAsRoot,
|
|
@@ -2727,6 +2745,7 @@ async function handleSecurityDiagnostics(_req, res) {
|
|
|
2727
2745
|
bwrapAvailable,
|
|
2728
2746
|
senderAllowlistConfigured,
|
|
2729
2747
|
adminAllowlistConfigured,
|
|
2748
|
+
platformBlacklist,
|
|
2730
2749
|
// Live env values so the UI can show what's effectively in force
|
|
2731
2750
|
// (process.env, which is what runtime sees) without round-tripping
|
|
2732
2751
|
// through the env file.
|