botmux 2.61.0 → 2.63.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/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/bot-registry.d.ts +15 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +14 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +28 -31
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +14 -8
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +2 -1
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +13 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +10 -4
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/session-activity.d.ts +16 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +35 -0
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +9 -10
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +6 -0
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +10 -2
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +6 -0
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +33 -12
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +10 -13
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +22 -17
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/public-redact.d.ts +16 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -0
- package/dist/dashboard/public-redact.js +62 -0
- package/dist/dashboard/public-redact.js.map +1 -0
- package/dist/dashboard/web/app.d.ts +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +171 -25
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +136 -64
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/connectors.d.ts.map +1 -1
- package/dist/dashboard/web/connectors.js +120 -25
- package/dist/dashboard/web/connectors.js.map +1 -1
- package/dist/dashboard/web/cyber-fx.d.ts +6 -0
- package/dist/dashboard/web/cyber-fx.d.ts.map +1 -0
- package/dist/dashboard/web/cyber-fx.js +289 -0
- package/dist/dashboard/web/cyber-fx.js.map +1 -0
- package/dist/dashboard/web/groups.d.ts.map +1 -1
- package/dist/dashboard/web/groups.js +6 -1
- package/dist/dashboard/web/groups.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +146 -8
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/overview.d.ts.map +1 -1
- package/dist/dashboard/web/overview.js +206 -48
- package/dist/dashboard/web/overview.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +16 -0
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +72 -1
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/roles.js +3 -3
- package/dist/dashboard/web/roles.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +404 -64
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings.d.ts +2 -0
- package/dist/dashboard/web/settings.d.ts.map +1 -0
- package/dist/dashboard/web/settings.js +135 -0
- package/dist/dashboard/web/settings.js.map +1 -0
- package/dist/dashboard/web/skin-intro.d.ts +4 -0
- package/dist/dashboard/web/skin-intro.d.ts.map +1 -0
- package/dist/dashboard/web/skin-intro.js +49 -0
- package/dist/dashboard/web/skin-intro.js.map +1 -0
- package/dist/dashboard/web/team-federation.js +4 -4
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard/web/theme-menu.d.ts +3 -0
- package/dist/dashboard/web/theme-menu.d.ts.map +1 -0
- package/dist/dashboard/web/theme-menu.js +97 -0
- package/dist/dashboard/web/theme-menu.js.map +1 -0
- package/dist/dashboard/web/ui.d.ts +16 -2
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +137 -7
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts +1 -5
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +127 -76
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +704 -512
- package/dist/dashboard-web/index.html +19 -14
- package/dist/dashboard-web/skins/bluearchive-hero.webp +0 -0
- package/dist/dashboard-web/skins/dragonball-goku.webp +0 -0
- package/dist/dashboard-web/skins/dragonball-wukong.webp +0 -0
- package/dist/dashboard-web/skins/fallout-vaultboy.webp +0 -0
- package/dist/dashboard-web/skins/genshin-breeze.webp +0 -0
- package/dist/dashboard-web/skins/ikun-hero.webp +0 -0
- package/dist/dashboard-web/skins/prts-priestess.webp +0 -0
- package/dist/dashboard-web/skins/zzz-hero.webp +0 -0
- package/dist/dashboard-web/skins/zzz-pattern.svg +25 -0
- package/dist/dashboard-web/style.css +2870 -16
- package/dist/dashboard.js +91 -31
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +15 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +51 -2
- package/dist/global-config.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +17 -3
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +5 -0
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +7 -5
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +2 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +15 -9
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/lark-hosts.d.ts +44 -0
- package/dist/im/lark/lark-hosts.d.ts.map +1 -0
- package/dist/im/lark/lark-hosts.js +49 -0
- package/dist/im/lark/lark-hosts.js.map +1 -0
- package/dist/services/connector-store.d.ts +2 -3
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/trigger-types.d.ts +1 -0
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/webhook-lifecycle-extractors.d.ts +4 -13
- package/dist/services/webhook-lifecycle-extractors.d.ts.map +1 -1
- package/dist/services/webhook-lifecycle-extractors.js +8 -23
- package/dist/services/webhook-lifecycle-extractors.js.map +1 -1
- package/dist/setup/verify-permissions.d.ts +2 -1
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +5 -8
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/lark-upload.d.ts +2 -1
- package/dist/utils/lark-upload.d.ts.map +1 -1
- package/dist/utils/lark-upload.js +11 -7
- package/dist/utils/lark-upload.js.map +1 -1
- package/dist/utils/screen-analyzer.d.ts +8 -0
- package/dist/utils/screen-analyzer.d.ts.map +1 -1
- package/dist/utils/screen-analyzer.js +32 -11
- package/dist/utils/screen-analyzer.js.map +1 -1
- package/dist/utils/user-token.d.ts +12 -4
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +64 -25
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker.js +4 -1
- package/dist/worker.js.map +1 -1
- package/dist/workflows/trigger-from-envelope.d.ts.map +1 -1
- package/dist/workflows/trigger-from-envelope.js +1 -0
- package/dist/workflows/trigger-from-envelope.js.map +1 -1
- package/package.json +2 -2
|
@@ -8,14 +8,28 @@ import { renderBotDefaultsPage } from './bot-defaults.js';
|
|
|
8
8
|
import { renderRolesPage } from './roles.js';
|
|
9
9
|
import { renderTeamFederationPage, renderTeamManagePage } from './team-federation.js';
|
|
10
10
|
import { renderConnectorsPage } from './connectors.js';
|
|
11
|
+
import { renderSettingsPage } from './settings.js';
|
|
11
12
|
import { renderWorkflowsPage } from './workflows.js';
|
|
12
13
|
import { renderWorkflowCatalogPage } from './workflow-catalog.js';
|
|
13
14
|
import { wireBotOnboardingButton } from './bot-onboarding.js';
|
|
14
|
-
import { t, ui } from './ui.js';
|
|
15
|
+
import { attentionReason, botDisplayName, escapeHtml, loadNameMaps, relTime, t, ui } from './ui.js';
|
|
16
|
+
import { initThemeMenu, paintThemeMenu } from './theme-menu.js';
|
|
15
17
|
const root = document.getElementById('root');
|
|
18
|
+
// Resolved once at bootstrap from GET /api/settings:
|
|
19
|
+
// - `isAuthed` → gates the management nav + route guards
|
|
20
|
+
// - `publicReadOnly` → decides whether a read 401 is a hard lockout (token
|
|
21
|
+
// rotated → blocking overlay) or just a read-only
|
|
22
|
+
// visitor touching a token-gated page (soft toast).
|
|
23
|
+
// Defaults keep the authed / legacy UX if the probe fails.
|
|
24
|
+
let isAuthed = true;
|
|
25
|
+
let publicReadOnly = false;
|
|
26
|
+
// Management pages are token-gated end-to-end (no public GET) — a read-only
|
|
27
|
+
// visitor must not reach them. `data-route` values from index.html's nav.
|
|
28
|
+
const MANAGE_ROUTES = ['roles', 'bot-defaults', 'team', 'connectors'];
|
|
16
29
|
// ── Auth-expiry overlay ──────────────────────────────────────────────────────
|
|
17
|
-
//
|
|
18
|
-
//
|
|
30
|
+
// Shown only when the dashboard token was rotated WHILE public read-only is off
|
|
31
|
+
// (a real hard lockout). Under public read-only a 401 is a soft toast instead
|
|
32
|
+
// (see patchedFetch) — so this no longer fires for read-only visitors.
|
|
19
33
|
let _expiredShown = false;
|
|
20
34
|
export function showAuthExpiredOverlay() {
|
|
21
35
|
if (_expiredShown)
|
|
@@ -27,37 +41,169 @@ export function showAuthExpiredOverlay() {
|
|
|
27
41
|
'position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;' +
|
|
28
42
|
'align-items:center;justify-content:center;z-index:9999';
|
|
29
43
|
el.innerHTML =
|
|
30
|
-
'<div style="background:var(--
|
|
44
|
+
'<div style="background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:12px;' +
|
|
31
45
|
'padding:36px 40px;max-width:460px;width:90vw;text-align:center;' +
|
|
32
46
|
'box-shadow:0 12px 40px rgba(0,0,0,.35)">' +
|
|
33
|
-
'<h2 style="margin:0 0 14px;font-size:19px">访问链接已失效</h2>' +
|
|
47
|
+
'<h2 style="margin:0 0 14px;font-size:19px;color:var(--fg)">访问链接已失效</h2>' +
|
|
34
48
|
'<p style="margin:0 0 24px;line-height:1.7;color:var(--muted,#8f959e);font-size:14px">' +
|
|
35
|
-
'
|
|
36
|
-
'<button
|
|
37
|
-
'style="padding:8px 22px;background:var(--accent
|
|
38
|
-
'border-radius:8px;cursor:pointer;font-size:14px"
|
|
49
|
+
'当前链接/访问已失效,请使用最新授权链接重新进入(运行 botmux dashboard 获取)。</p>' +
|
|
50
|
+
'<button id="auth-expired-dismiss" type="button" ' +
|
|
51
|
+
'style="padding:8px 22px;background:var(--accent);color:var(--on-accent);border:none;' +
|
|
52
|
+
'border-radius:8px;cursor:pointer;font-size:14px">知道了</button>' +
|
|
39
53
|
'</div>';
|
|
40
54
|
document.body.appendChild(el);
|
|
55
|
+
// `window.close()` can't close a tab the user opened, so the old inline
|
|
56
|
+
// onclick was a dead button (overlay got stuck). Dismiss the overlay instead,
|
|
57
|
+
// and let it reappear on the next genuine 401.
|
|
58
|
+
const dismiss = () => { el.remove(); _expiredShown = false; };
|
|
59
|
+
el.querySelector('#auth-expired-dismiss')?.addEventListener('click', dismiss);
|
|
60
|
+
el.addEventListener('click', (e) => { if (e.target === el)
|
|
61
|
+
dismiss(); });
|
|
41
62
|
}
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
63
|
+
// ── Read-only toast (write attempt without a valid token) ───────────────────
|
|
64
|
+
// In public read-only mode browsing GETs never 401, but a write action
|
|
65
|
+
// (close session, cancel run, …) without the active token does. That's not
|
|
66
|
+
// "your link died" — it's "you're a read-only visitor", so show a transient
|
|
67
|
+
// toast instead of the blocking overlay.
|
|
68
|
+
let _roToastTimer;
|
|
69
|
+
export function showReadOnlyToast() {
|
|
70
|
+
let el = document.getElementById('readonly-toast');
|
|
71
|
+
if (!el) {
|
|
72
|
+
el = document.createElement('div');
|
|
73
|
+
el.id = 'readonly-toast';
|
|
74
|
+
el.style.cssText =
|
|
75
|
+
'position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;' +
|
|
76
|
+
'background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;' +
|
|
77
|
+
'border-radius:8px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)';
|
|
78
|
+
document.body.appendChild(el);
|
|
79
|
+
}
|
|
80
|
+
el.textContent = '当前是只读访问,此操作需要授权链接(运行 botmux dashboard 获取)';
|
|
81
|
+
el.style.display = 'block';
|
|
82
|
+
if (_roToastTimer)
|
|
83
|
+
window.clearTimeout(_roToastTimer);
|
|
84
|
+
_roToastTimer = window.setTimeout(() => { el.style.display = 'none'; }, 4000);
|
|
85
|
+
}
|
|
86
|
+
// Patch the global fetch to route 401s: a read (GET/HEAD) 401 means the token
|
|
87
|
+
// was rotated while this tab was open (only possible when public read-only
|
|
88
|
+
// mode is off) → blocking overlay; a write 401 means "read-only visitor" →
|
|
89
|
+
// transient toast.
|
|
45
90
|
const _origFetch = window.fetch.bind(window);
|
|
46
91
|
window.fetch = async function patchedFetch(...args) {
|
|
47
92
|
const res = await _origFetch(...args);
|
|
48
|
-
if (res.status === 401)
|
|
49
|
-
|
|
93
|
+
if (res.status === 401) {
|
|
94
|
+
const method = (args[1]?.method ?? 'GET').toUpperCase();
|
|
95
|
+
const isRead = method === 'GET' || method === 'HEAD';
|
|
96
|
+
// A read 401 is a hard lockout (token rotated → blocking overlay) ONLY when
|
|
97
|
+
// public read-only is off. Under public read-only a read 401 just means a
|
|
98
|
+
// tokenless visitor touched a token-gated page → soft toast, never the
|
|
99
|
+
// stuck overlay. Writes are always a soft "needs the active token".
|
|
100
|
+
if (isRead && !publicReadOnly)
|
|
101
|
+
showAuthExpiredOverlay();
|
|
102
|
+
else
|
|
103
|
+
showReadOnlyToast();
|
|
104
|
+
}
|
|
50
105
|
return res;
|
|
51
106
|
};
|
|
107
|
+
// ── 全局 attention strip ─────────────────────────────────────────────────────
|
|
108
|
+
// 「需要你」是全局最高优先级:不管在哪个页面,待处理数和最久等待项都常驻
|
|
109
|
+
// 顶部一条琥珀色 strip,点「立即处理」跳到会话页(needs-you 列置顶)。
|
|
110
|
+
let lastStripHtml = '';
|
|
111
|
+
function paintAttentionStrip() {
|
|
112
|
+
const el = document.getElementById('attention-strip');
|
|
113
|
+
if (!el)
|
|
114
|
+
return;
|
|
115
|
+
const pending = [...store.sessions.values()]
|
|
116
|
+
.map(s => ({ s, reason: attentionReason(s) }))
|
|
117
|
+
.filter((x) => !!x.reason)
|
|
118
|
+
.sort((a, b) => Number(a.s.lastMessageAt ?? 0) - Number(b.s.lastMessageAt ?? 0));
|
|
119
|
+
if (pending.length === 0) {
|
|
120
|
+
el.hidden = true;
|
|
121
|
+
el.innerHTML = '';
|
|
122
|
+
lastStripHtml = '';
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const longest = pending[0];
|
|
126
|
+
const html = `
|
|
127
|
+
<span class="attention-strip-ic" aria-hidden="true">!</span>
|
|
128
|
+
<b>${escapeHtml(t('strip.pending', { count: pending.length }))}</b>
|
|
129
|
+
<span class="attention-strip-longest">${escapeHtml(t('strip.longest', {
|
|
130
|
+
time: relTime(longest.s.lastMessageAt),
|
|
131
|
+
bot: botDisplayName(longest.s),
|
|
132
|
+
reason: longest.reason,
|
|
133
|
+
}))}</span>
|
|
134
|
+
<a class="attention-strip-go" href="#/sessions">${escapeHtml(t('strip.handle'))}</a>`;
|
|
135
|
+
el.hidden = false;
|
|
136
|
+
// 内容没变就不重写 — innerHTML 重建会把 strip-pulse 动画打回起点(视觉跳变)
|
|
137
|
+
if (html === lastStripHtml)
|
|
138
|
+
return;
|
|
139
|
+
lastStripHtml = html;
|
|
140
|
+
el.innerHTML = html;
|
|
141
|
+
}
|
|
142
|
+
store.on(paintAttentionStrip);
|
|
143
|
+
// bot 友好名异步解析回来后刷一次 strip(页面级重绘由各 mount 自己处理)
|
|
144
|
+
void loadNameMaps().then(paintAttentionStrip);
|
|
145
|
+
// Resolve the read-only/authed state from /api/settings (authed reflects the
|
|
146
|
+
// cookie; publicReadOnly is the global toggle). Errors keep the authed default
|
|
147
|
+
// so a transient probe failure never hides nav from a real token holder.
|
|
148
|
+
async function loadAuthState() {
|
|
149
|
+
try {
|
|
150
|
+
const r = await fetch('/api/settings');
|
|
151
|
+
if (r.ok) {
|
|
152
|
+
const j = await r.json();
|
|
153
|
+
isAuthed = !!j.authed;
|
|
154
|
+
publicReadOnly = !!(j.settings && j.settings.publicReadOnly);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch { /* keep defaults */ }
|
|
158
|
+
}
|
|
159
|
+
// Read-only visitors can't use the management pages (all token-gated), so hide
|
|
160
|
+
// their nav entries + the add-bot action instead of luring them into a 401.
|
|
161
|
+
function applyAuthVisibility() {
|
|
162
|
+
for (const r of MANAGE_ROUTES) {
|
|
163
|
+
const a = document.querySelector(`.sidebar-nav a[data-route="${r}"]`);
|
|
164
|
+
if (a)
|
|
165
|
+
a.style.display = isAuthed ? '' : 'none';
|
|
166
|
+
}
|
|
167
|
+
const addBot = document.getElementById('add-bot-btn');
|
|
168
|
+
if (addBot)
|
|
169
|
+
addBot.style.display = isAuthed ? '' : 'none';
|
|
170
|
+
}
|
|
171
|
+
function renderAuthRequiredPage(host) {
|
|
172
|
+
host.innerHTML =
|
|
173
|
+
'<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;' +
|
|
174
|
+
'background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:14px;' +
|
|
175
|
+
'padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)">' +
|
|
176
|
+
'<h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">此页需要授权链接</h2>' +
|
|
177
|
+
'<p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">' +
|
|
178
|
+
'你当前是只读访问,管理页(角色 / Bot 配置 / 团队 / 接入点)需要授权链接。' +
|
|
179
|
+
'运行 <code>botmux dashboard</code> 获取最新链接后即可管理。</p>' +
|
|
180
|
+
'<a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);' +
|
|
181
|
+
'color:var(--on-accent);border-radius:8px;text-decoration:none;font-size:14px">返回总览</a>' +
|
|
182
|
+
'</section>';
|
|
183
|
+
}
|
|
52
184
|
// Pages that own a polling loop / cleanup return a disposer; we run it
|
|
53
185
|
// on the next route switch so timers don't leak across navigations.
|
|
54
186
|
let pageDispose = null;
|
|
187
|
+
function highlightNav(hash) {
|
|
188
|
+
for (const a of document.querySelectorAll('.sidebar-nav a')) {
|
|
189
|
+
const href = a.getAttribute('href') ?? '#/';
|
|
190
|
+
a.classList.toggle('active', href === (hash || '#/'));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
55
193
|
function route() {
|
|
56
194
|
if (pageDispose) {
|
|
57
195
|
pageDispose();
|
|
58
196
|
pageDispose = null;
|
|
59
197
|
}
|
|
60
198
|
const hash = location.hash || '#/';
|
|
199
|
+
// Read-only hard-guard: a tokenless visitor hitting a management route gets a
|
|
200
|
+
// friendly notice instead of a page that fires a 401 (which used to pop a
|
|
201
|
+
// stuck "link expired" overlay).
|
|
202
|
+
if (!isAuthed && MANAGE_ROUTES.some(r => hash.startsWith('#/' + r))) {
|
|
203
|
+
renderAuthRequiredPage(root);
|
|
204
|
+
highlightNav(hash);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
61
207
|
// Catalog is a sub-route under Workflows now (`#/workflows/catalog[/<id>]`)
|
|
62
208
|
// so the top nav has a single "Workflows (beta)" entry. Legacy
|
|
63
209
|
// `#/workflows-catalog[*]` URLs are kept working for any external links
|
|
@@ -70,6 +216,8 @@ function route() {
|
|
|
70
216
|
pageDispose = renderWorkflowsPage(root);
|
|
71
217
|
else if (hash.startsWith('#/groups'))
|
|
72
218
|
renderGroupsPage(root);
|
|
219
|
+
else if (hash.startsWith('#/settings'))
|
|
220
|
+
void renderSettingsPage(root);
|
|
73
221
|
else if (hash.startsWith('#/bot-defaults'))
|
|
74
222
|
renderBotDefaultsPage(root);
|
|
75
223
|
else if (hash.startsWith('#/connectors'))
|
|
@@ -86,11 +234,7 @@ function route() {
|
|
|
86
234
|
renderSessionsPage(root);
|
|
87
235
|
else
|
|
88
236
|
void renderOverviewPage(root);
|
|
89
|
-
|
|
90
|
-
for (const a of document.querySelectorAll('.sidebar-nav a')) {
|
|
91
|
-
const href = a.getAttribute('href') ?? '#/';
|
|
92
|
-
a.classList.toggle('active', href === (hash || '#/'));
|
|
93
|
-
}
|
|
237
|
+
highlightNav(hash);
|
|
94
238
|
}
|
|
95
239
|
const statusEl = document.getElementById('status');
|
|
96
240
|
function paintStatus() {
|
|
@@ -107,18 +251,14 @@ function paintChrome() {
|
|
|
107
251
|
document.querySelectorAll('[data-locale]').forEach(btn => {
|
|
108
252
|
btn.classList.toggle('active', btn.dataset.locale === ui.locale);
|
|
109
253
|
});
|
|
110
|
-
|
|
111
|
-
btn.classList.toggle('active', btn.dataset.themeMode === ui.themeMode);
|
|
112
|
-
});
|
|
254
|
+
paintThemeMenu();
|
|
113
255
|
paintStatus();
|
|
114
256
|
}
|
|
115
257
|
function wireChromeControls() {
|
|
116
258
|
document.querySelectorAll('[data-locale]').forEach(btn => {
|
|
117
259
|
btn.onclick = () => ui.setLocale(btn.dataset.locale);
|
|
118
260
|
});
|
|
119
|
-
|
|
120
|
-
btn.onclick = () => ui.setThemeMode(btn.dataset.themeMode);
|
|
121
|
-
});
|
|
261
|
+
initThemeMenu();
|
|
122
262
|
}
|
|
123
263
|
// esbuild's IIFE bundle does not support top-level await — use an async IIFE.
|
|
124
264
|
void (async () => {
|
|
@@ -127,9 +267,15 @@ void (async () => {
|
|
|
127
267
|
wireBotOnboardingButton();
|
|
128
268
|
ui.on(() => {
|
|
129
269
|
paintChrome();
|
|
270
|
+
paintAttentionStrip();
|
|
130
271
|
route();
|
|
131
272
|
});
|
|
132
273
|
paintChrome();
|
|
274
|
+
paintAttentionStrip();
|
|
275
|
+
// Resolve authed/publicReadOnly BEFORE first render so the management nav is
|
|
276
|
+
// hidden and route guards are active for read-only visitors from frame one.
|
|
277
|
+
await loadAuthState();
|
|
278
|
+
applyAuthVisibility();
|
|
133
279
|
try {
|
|
134
280
|
await bootstrap();
|
|
135
281
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/dashboard/web/app.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/dashboard/web/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-defaults.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/bot-defaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot-defaults.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/bot-defaults.ts"],"names":[],"mappings":"AA8EA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,WAAW,iBA0qB5D"}
|