botmux 1.13.7 → 1.13.9
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/im/lark/card-builder.js +1 -1
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +31 -12
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@ export function buildSessionCard(sessionId, rootId, terminalUrl, title, cliId, s
|
|
|
22
22
|
const actions = [
|
|
23
23
|
{
|
|
24
24
|
tag: 'button',
|
|
25
|
-
text: { tag: 'plain_text', content: '🖥️ 打开终端' },
|
|
25
|
+
text: { tag: 'plain_text', content: showManageButtons ? '🖥️ 打开可操作终端' : '🖥️ 打开终端' },
|
|
26
26
|
type: 'primary',
|
|
27
27
|
multi_url: {
|
|
28
28
|
url: terminalUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-builder.js","sourceRoot":"","sources":["../../../src/im/lark/card-builder.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAA0B;IAC7C,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,UAAU;CACvB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACzC,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,MAAc,EACd,WAAmB,EACnB,KAAa,EACb,KAAa,EACb,iBAA2B;IAE3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAU;QACrB;YACE,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"card-builder.js","sourceRoot":"","sources":["../../../src/im/lark/card-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCpE,wBAAgB,YAAY,IAAI,SAAS,CA8ExC"}
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
3
4
|
import { existsSync } from 'node:fs';
|
|
4
5
|
import { join } from 'node:path';
|
|
5
6
|
import { registerBot, loadBotConfigs } from './bot-registry.js';
|
|
@@ -7,19 +8,36 @@ import * as sessionStore from './services/session-store.js';
|
|
|
7
8
|
import { tools } from './tools/index.js';
|
|
8
9
|
import { logger } from './utils/logger.js';
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
-
* botmux worker.
|
|
12
|
-
*
|
|
13
|
-
* after spawning each CLI. The MCP server checks if its own ppid has a
|
|
14
|
-
* corresponding marker.
|
|
11
|
+
* Walk up the process tree and check whether any ancestor has a CLI PID
|
|
12
|
+
* marker written by the botmux worker. Walking (not just checking ppid)
|
|
13
|
+
* handles CLIs that fork internal subprocesses before spawning MCP servers.
|
|
15
14
|
*
|
|
16
|
-
* Cross-platform: uses
|
|
15
|
+
* Cross-platform: uses `ps -o ppid=` (works on macOS + Linux).
|
|
17
16
|
*/
|
|
18
|
-
function
|
|
17
|
+
function hasAncestorCliMarker() {
|
|
19
18
|
const dataDir = process.env.SESSION_DATA_DIR;
|
|
20
19
|
if (!dataDir)
|
|
21
20
|
return false;
|
|
22
|
-
|
|
21
|
+
const markersDir = join(dataDir, '.botmux-cli-pids');
|
|
22
|
+
let pid = process.ppid;
|
|
23
|
+
for (let depth = 0; depth < 8 && pid > 1; depth++) {
|
|
24
|
+
if (existsSync(join(markersDir, String(pid))))
|
|
25
|
+
return true;
|
|
26
|
+
try {
|
|
27
|
+
const output = execSync(`ps -o ppid= -p ${pid}`, {
|
|
28
|
+
encoding: 'utf-8',
|
|
29
|
+
timeout: 2000,
|
|
30
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
31
|
+
}).trim();
|
|
32
|
+
pid = parseInt(output, 10);
|
|
33
|
+
if (isNaN(pid))
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
23
41
|
}
|
|
24
42
|
export function createServer() {
|
|
25
43
|
// Register all bots so MCP tools can send messages as any bot.
|
|
@@ -47,10 +65,11 @@ export function createServer() {
|
|
|
47
65
|
// CLI MCP servers (the MCP SDK only passes config env + a 6-var
|
|
48
66
|
// whitelist to the server subprocess, NOT the full parent env).
|
|
49
67
|
//
|
|
50
|
-
// 2.
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
|
|
68
|
+
// 2. hasAncestorCliMarker() — walks the process tree (via `ps -o ppid=`)
|
|
69
|
+
// and checks if any ancestor PID has a marker file written by the
|
|
70
|
+
// botmux worker. Handles CLIs that fork internal subprocesses.
|
|
71
|
+
// Cross-platform: `ps -o ppid=` works on both macOS and Linux.
|
|
72
|
+
const isBotmuxSession = process.env.BOTMUX === '1' && hasAncestorCliMarker();
|
|
54
73
|
const instructions = isBotmuxSession
|
|
55
74
|
? [
|
|
56
75
|
'You are connected to a Lark (Feishu) topic group. The user reads Lark, not your terminal.',
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;;;;GAMG;AACH,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACrD,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,GAAG,EAAE,EAAE;gBAC/C,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;aACpC,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,GAAG,CAAC;gBAAE,MAAM;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,+DAA+D;IAC/D,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC;IAChG,CAAC;IAED,gFAAgF;IAChF,wDAAwD;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,EAAE;IACF,uEAAuE;IACvE,oEAAoE;IACpE,oEAAoE;IACpE,EAAE;IACF,0EAA0E;IAC1E,sEAAsE;IACtE,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7E,MAAM,YAAY,GAAG,eAAe;QAClC,CAAC,CAAC;YACE,2FAA2F;YAC3F,0HAA0H;YAC1H,EAAE;YACF,aAAa;YACb,0IAA0I;YAC1I,iFAAiF;YACjF,+DAA+D;YAC/D,uEAAuE;YACvE,2EAA2E;SAC5E,CAAC,IAAI,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;KACjB,EACD;QACE,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;KACtC,CACF,CAAC;IAEF,0EAA0E;IAC1E,8DAA8D;IAC9D,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;gBACzE,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC5E,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|