botmux 2.45.0 → 2.46.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/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +471 -2
- 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 +114 -2
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +16 -4
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +10 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/worker-pool.d.ts +105 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +284 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +7 -1
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/web/team-federation.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation.js +17 -2
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard-web/app.js +73 -73
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +61 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +61 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +82 -0
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +315 -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 +197 -2
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +24 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +83 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +1 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/services/relay-picker.d.ts +22 -0
- package/dist/services/relay-picker.d.ts.map +1 -0
- package/dist/services/relay-picker.js +62 -0
- package/dist/services/relay-picker.js.map +1 -0
- package/dist/setup/ensure-tmux.d.ts +0 -22
- package/dist/setup/ensure-tmux.d.ts.map +1 -1
- package/dist/setup/ensure-tmux.js +25 -1
- package/dist/setup/ensure-tmux.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/daemon-discovery.d.ts +11 -0
- package/dist/utils/daemon-discovery.d.ts.map +1 -0
- package/dist/utils/daemon-discovery.js +59 -0
- package/dist/utils/daemon-discovery.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight cross-process discovery of online botmux daemons.
|
|
3
|
+
*
|
|
4
|
+
* Each daemon writes a descriptor file to `<dataDir>/dashboard-daemons/`
|
|
5
|
+
* (containing larkAppId, ipcPort, pid, lastHeartbeat) and refreshes its
|
|
6
|
+
* heartbeat periodically. Any other process — CLI subcommands, dashboard,
|
|
7
|
+
* other daemons — can read this directory to discover live peers, no
|
|
8
|
+
* shared in-memory state required.
|
|
9
|
+
*
|
|
10
|
+
* A daemon is considered offline if its heartbeat hasn't been refreshed in
|
|
11
|
+
* the last STALE_MS (90s by default — matches dashboard/registry.ts).
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { config } from '../config.js';
|
|
16
|
+
const STALE_MS = 90_000;
|
|
17
|
+
function registryDir() {
|
|
18
|
+
return join(config.session.dataDir, 'dashboard-daemons');
|
|
19
|
+
}
|
|
20
|
+
/** List every daemon whose descriptor file is fresh (heartbeat within STALE_MS). */
|
|
21
|
+
export function listOnlineDaemons() {
|
|
22
|
+
const dir = registryDir();
|
|
23
|
+
if (!existsSync(dir))
|
|
24
|
+
return [];
|
|
25
|
+
const now = Date.now();
|
|
26
|
+
const out = [];
|
|
27
|
+
let names = [];
|
|
28
|
+
try {
|
|
29
|
+
names = readdirSync(dir);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
for (const f of names) {
|
|
35
|
+
if (!f.endsWith('.json'))
|
|
36
|
+
continue;
|
|
37
|
+
try {
|
|
38
|
+
const raw = readFileSync(join(dir, f), 'utf-8');
|
|
39
|
+
const d = JSON.parse(raw);
|
|
40
|
+
if (typeof d.ipcPort !== 'number' || typeof d.larkAppId !== 'string')
|
|
41
|
+
continue;
|
|
42
|
+
if (now - (d.lastHeartbeat ?? 0) > STALE_MS)
|
|
43
|
+
continue;
|
|
44
|
+
out.push({
|
|
45
|
+
larkAppId: d.larkAppId,
|
|
46
|
+
ipcPort: d.ipcPort,
|
|
47
|
+
pid: d.pid,
|
|
48
|
+
lastHeartbeat: d.lastHeartbeat,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch { /* malformed — skip */ }
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/** Find a specific online daemon by larkAppId. Returns null if offline / not found. */
|
|
56
|
+
export function findOnlineDaemon(larkAppId) {
|
|
57
|
+
return listOnlineDaemons().find(d => d.larkAppId === larkAppId) ?? null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=daemon-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-discovery.js","sourceRoot":"","sources":["../../src/utils/daemon-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAStC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAC3D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;YACvD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;gBAAE,SAAS;YAC/E,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,QAAQ;gBAAE,SAAS;YACtD,GAAG,CAAC,IAAI,CAAC;gBACP,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,aAAa,EAAE,CAAC,CAAC,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;AAC1E,CAAC"}
|