botmux 2.106.0 → 2.107.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/dist/bot-registry.d.ts +25 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +6 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +5 -0
- 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 +27 -1
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +6 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +25 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/pending-response.d.ts +1 -0
- package/dist/core/pending-response.d.ts.map +1 -1
- package/dist/core/pending-response.js +1 -0
- package/dist/core/pending-response.js.map +1 -1
- package/dist/core/resource-monitor/attribution.d.ts +70 -0
- package/dist/core/resource-monitor/attribution.d.ts.map +1 -0
- package/dist/core/resource-monitor/attribution.js +222 -0
- package/dist/core/resource-monitor/attribution.js.map +1 -0
- package/dist/core/resource-monitor/procfs.d.ts +22 -0
- package/dist/core/resource-monitor/procfs.d.ts.map +1 -0
- package/dist/core/resource-monitor/procfs.js +134 -0
- package/dist/core/resource-monitor/procfs.js.map +1 -0
- package/dist/core/resource-monitor/ring-buffer.d.ts +15 -0
- package/dist/core/resource-monitor/ring-buffer.d.ts.map +1 -0
- package/dist/core/resource-monitor/ring-buffer.js +61 -0
- package/dist/core/resource-monitor/ring-buffer.js.map +1 -0
- package/dist/core/resource-monitor/runtime.d.ts +31 -0
- package/dist/core/resource-monitor/runtime.d.ts.map +1 -0
- package/dist/core/resource-monitor/runtime.js +92 -0
- package/dist/core/resource-monitor/runtime.js.map +1 -0
- package/dist/core/resource-monitor/top-selector.d.ts +18 -0
- package/dist/core/resource-monitor/top-selector.d.ts.map +1 -0
- package/dist/core/resource-monitor/top-selector.js +57 -0
- package/dist/core/resource-monitor/top-selector.js.map +1 -0
- package/dist/core/resource-monitor/types.d.ts +181 -0
- package/dist/core/resource-monitor/types.d.ts.map +1 -0
- package/dist/core/resource-monitor/types.js +2 -0
- package/dist/core/resource-monitor/types.js.map +1 -0
- package/dist/core/session-manager.d.ts +3 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +31 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/daemon.d.ts +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +44 -22
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +1 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/resource-monitor-service.d.ts +56 -0
- package/dist/dashboard/resource-monitor-service.d.ts.map +1 -0
- package/dist/dashboard/resource-monitor-service.js +446 -0
- package/dist/dashboard/resource-monitor-service.js.map +1 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +160 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +18 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +274 -2
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/monitor-room-store.d.ts +20 -0
- package/dist/dashboard/web/monitor-room-store.d.ts.map +1 -0
- package/dist/dashboard/web/monitor-room-store.js +80 -0
- package/dist/dashboard/web/monitor-room-store.js.map +1 -0
- package/dist/dashboard/web/monitor-room.d.ts +31 -0
- package/dist/dashboard/web/monitor-room.d.ts.map +1 -0
- package/dist/dashboard/web/monitor-room.js +393 -0
- package/dist/dashboard/web/monitor-room.js.map +1 -0
- package/dist/dashboard/web/monitoring-page.d.ts +155 -0
- package/dist/dashboard/web/monitoring-page.d.ts.map +1 -0
- package/dist/dashboard/web/monitoring-page.js +189 -0
- package/dist/dashboard/web/monitoring-page.js.map +1 -0
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +108 -1
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +3 -0
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +18 -0
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/session-terminal.d.ts +7 -0
- package/dist/dashboard/web/session-terminal.d.ts.map +1 -0
- package/dist/dashboard/web/session-terminal.js +17 -0
- package/dist/dashboard/web/session-terminal.js.map +1 -0
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +2 -1
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +4 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +98 -17
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/skills-page.js +1 -1
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/web/substitute-targets.d.ts +30 -0
- package/dist/dashboard/web/substitute-targets.d.ts.map +1 -0
- package/dist/dashboard/web/substitute-targets.js +99 -0
- package/dist/dashboard/web/substitute-targets.js.map +1 -0
- package/dist/dashboard/web/ui.d.ts +1 -1
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +4 -1
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard-web/app.js +3 -3
- package/dist/dashboard-web/chunks/bot-defaults-page-OCIHPGEU.js +438 -0
- package/dist/dashboard-web/chunks/chunk-3N2PPQVD.js +1 -0
- package/dist/dashboard-web/chunks/chunk-3UJYRR2Q.js +37 -0
- package/dist/dashboard-web/chunks/{chunk-VFCACTRF.js → chunk-PE6W3C2C.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-QW54DWU3.js +325 -0
- package/dist/dashboard-web/chunks/{connectors-VDOAKUW3.js → connectors-IGETYWCP.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-CX5AN4XG.js → groups-page-MYBS4ZYJ.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-DOMRL4S6.js → insights-page-UPA32V2S.js} +1 -1
- package/dist/dashboard-web/chunks/monitor-room-RFX4HPS5.js +51 -0
- package/dist/dashboard-web/chunks/monitoring-page-7T3BESZ2.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-LJSBCQW4.js +1 -0
- package/dist/dashboard-web/chunks/{roles-page-3FEAH6S4.js → roles-page-ESURTVQH.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-CTQEA7IE.js → schedules-LML2ISOT.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-YB73XOTU.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-MCO5QR7Z.js +1 -0
- package/dist/dashboard-web/chunks/{settings-page-R23I3IZG.js → settings-page-OSDKNVS3.js} +1 -1
- package/dist/dashboard-web/chunks/skills-page-PXBZJ6P6.js +2 -0
- package/dist/dashboard-web/chunks/{team-federation-page-ZKL3YMGN.js → team-federation-page-TTPVHFPX.js} +1 -1
- package/dist/dashboard-web/chunks/{workflows-4BYQQBFP.js → workflows-FCPM4S4D.js} +1 -1
- package/dist/dashboard-web/index.html +2 -1
- package/dist/dashboard-web/style.css +818 -8
- package/dist/dashboard.js +37 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +8 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +8 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +18 -0
- 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 +12 -2
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +3 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +59 -2
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts +35 -0
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +56 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/substitute-command.d.ts +2 -0
- package/dist/im/lark/substitute-command.d.ts.map +1 -0
- package/dist/im/lark/substitute-command.js +51 -0
- package/dist/im/lark/substitute-command.js.map +1 -0
- package/dist/services/substitute-chat-toggle-store.d.ts +3 -0
- package/dist/services/substitute-chat-toggle-store.d.ts.map +1 -0
- package/dist/services/substitute-chat-toggle-store.js +58 -0
- package/dist/services/substitute-chat-toggle-store.js.map +1 -0
- package/dist/services/substitute-mode-normalize.d.ts +22 -0
- package/dist/services/substitute-mode-normalize.d.ts.map +1 -0
- package/dist/services/substitute-mode-normalize.js +56 -0
- package/dist/services/substitute-mode-normalize.js.map +1 -0
- package/dist/services/substitute-mode-store.d.ts +50 -0
- package/dist/services/substitute-mode-store.d.ts.map +1 -0
- package/dist/services/substitute-mode-store.js +115 -0
- package/dist/services/substitute-mode-store.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/worker.js +20 -1
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-3OIY7N76.js +0 -409
- package/dist/dashboard-web/chunks/chunk-BNEXMNQD.js +0 -31
- package/dist/dashboard-web/chunks/chunk-DKKOGZCG.js +0 -317
- package/dist/dashboard-web/chunks/overview-page-AZBAXVZ7.js +0 -1
- package/dist/dashboard-web/chunks/sessions-LVZCXO2Z.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-NHBJDSBC.js +0 -1
- package/dist/dashboard-web/chunks/skills-page-VUG3EPWX.js +0 -2
package/dist/dashboard.js
CHANGED
|
@@ -67,6 +67,7 @@ import { automateOpenPlatformSetup } from './setup/open-platform-automation.js';
|
|
|
67
67
|
import { VC_MEETING_FEATURE_SCOPES, VC_MEETING_REALTIME_VOICE_SCOPES } from './setup/verify-permissions.js';
|
|
68
68
|
import { checkLarkCliVersion, MIN_LARK_CLI_VERSION_FOR_VC_BOT } from './vc-agent/polling-source.js';
|
|
69
69
|
import { larkHosts } from './im/lark/lark-hosts.js';
|
|
70
|
+
import { buildResourceMonitorDaemonSeeds, createResourceMonitorService, handleResourceMonitorApi, toResourceMonitorSessionSeed } from './dashboard/resource-monitor-service.js';
|
|
70
71
|
const SECRET_PATH = join(homedir(), '.botmux', '.dashboard-secret');
|
|
71
72
|
const TOKEN_PATH = join(homedir(), '.botmux', '.dashboard-token');
|
|
72
73
|
/** Per-daemon budget for the cross-daemon insight overview fan-out — bounds
|
|
@@ -811,6 +812,20 @@ registry.on(syncSubscriptions);
|
|
|
811
812
|
// Initial attach for every daemon already known. Run in parallel so a slow
|
|
812
813
|
// daemon doesn't block the others.
|
|
813
814
|
await Promise.all(registry.list().map(attachDaemon));
|
|
815
|
+
const resourceMonitor = createResourceMonitorService({
|
|
816
|
+
intervalMs: 10_000,
|
|
817
|
+
topSessionLimit: 30,
|
|
818
|
+
sessionHistoryMs: 3 * 60 * 60_000,
|
|
819
|
+
aggregateHistoryMs: 24 * 60 * 60_000,
|
|
820
|
+
listSessions: () => {
|
|
821
|
+
const names = new Map(registry.list().map(d => [d.larkAppId, d.botName]));
|
|
822
|
+
return aggregator.getSessions()
|
|
823
|
+
.filter(s => s.status !== 'closed')
|
|
824
|
+
.map(s => toResourceMonitorSessionSeed(s, names.get(String(s.larkAppId ?? ''))));
|
|
825
|
+
},
|
|
826
|
+
listDaemons: () => buildResourceMonitorDaemonSeeds(loadBotConfigs(), registry.list()),
|
|
827
|
+
});
|
|
828
|
+
resourceMonitor.start();
|
|
814
829
|
// ─── Static frontend ─────────────────────────────────────────────────────────
|
|
815
830
|
// Path to the bundled frontend (sibling of dist/dashboard.js)
|
|
816
831
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -1504,6 +1519,9 @@ const server = createServer(async (req, res) => {
|
|
|
1504
1519
|
return jsonRes(res, 200, startHd2dDownload());
|
|
1505
1520
|
}
|
|
1506
1521
|
// ─── Public API (cookie/token already validated above) ──────────────────
|
|
1522
|
+
if (await handleResourceMonitorApi(req, res, url, resourceMonitor)) {
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1507
1525
|
if (req.method === 'GET' && url.pathname === '/api/sessions') {
|
|
1508
1526
|
// Sessions spawned before a bot config carried a display name store the
|
|
1509
1527
|
// raw appId as botName — resolve through the live registry so consumers
|
|
@@ -2611,6 +2629,24 @@ const server = createServer(async (req, res) => {
|
|
|
2611
2629
|
res.end(await upstream.text());
|
|
2612
2630
|
return;
|
|
2613
2631
|
}
|
|
2632
|
+
// PUT /api/bots/:appId/substitute-mode — proxy to that bot's daemon. Body
|
|
2633
|
+
// carries `{ enabled, targets, disclosure }`.
|
|
2634
|
+
let mBotSubstituteMode;
|
|
2635
|
+
if (req.method === 'PUT' && (mBotSubstituteMode = url.pathname.match(/^\/api\/bots\/([^/]+)\/substitute-mode$/))) {
|
|
2636
|
+
const appId = decodeURIComponent(mBotSubstituteMode[1]);
|
|
2637
|
+
const chunks = [];
|
|
2638
|
+
for await (const c of req)
|
|
2639
|
+
chunks.push(c);
|
|
2640
|
+
const raw = Buffer.concat(chunks).toString('utf8') || '{}';
|
|
2641
|
+
const upstream = await proxyToDaemon(appId, `/api/bot-substitute-mode`, {
|
|
2642
|
+
method: 'PUT',
|
|
2643
|
+
headers: { 'content-type': 'application/json' },
|
|
2644
|
+
body: raw,
|
|
2645
|
+
});
|
|
2646
|
+
res.writeHead(upstream.status, { 'content-type': 'application/json' });
|
|
2647
|
+
res.end(await upstream.text());
|
|
2648
|
+
return;
|
|
2649
|
+
}
|
|
2614
2650
|
// PUT /api/bots/:appId/summary-range — proxy to that bot's daemon. Body
|
|
2615
2651
|
// `{ limit, sinceHours }`; daemon updates the explicit /summary range.
|
|
2616
2652
|
let mBotSummaryRange;
|
|
@@ -3343,6 +3379,7 @@ function shutdown() {
|
|
|
3343
3379
|
off();
|
|
3344
3380
|
subs.clear();
|
|
3345
3381
|
registry.stop();
|
|
3382
|
+
resourceMonitor.stop();
|
|
3346
3383
|
platformTunnel?.stop();
|
|
3347
3384
|
server.close(() => process.exit(0));
|
|
3348
3385
|
// Hard-exit fallback after 5s
|