team-anya 0.2.4 → 0.2.6
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.
|
@@ -31,6 +31,11 @@ export function removePid(anyaHome) {
|
|
|
31
31
|
unlinkSync(pidFile);
|
|
32
32
|
}
|
|
33
33
|
export function isProcessAlive(pid) {
|
|
34
|
+
// 如果 PID 就是当前进程自身,说明是容器重启后 PID 复用(尤其 PID 1)
|
|
35
|
+
// 这不是另一个运行中的实例,应视为残留
|
|
36
|
+
if (pid === process.pid) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
34
39
|
try {
|
|
35
40
|
process.kill(pid, 0);
|
|
36
41
|
}
|
|
@@ -43,8 +43,6 @@ function createFrankyMcpServer(deps) {
|
|
|
43
43
|
*
|
|
44
44
|
* 所有工具实现来自 @team-anya/mcp-tools。
|
|
45
45
|
*/
|
|
46
|
-
/** Franky MCP server 固定端口 */
|
|
47
|
-
export const FRANKY_MCP_PORT = 19530;
|
|
48
46
|
export async function startFrankyMcpServer(deps) {
|
|
49
47
|
const sessions = new Map();
|
|
50
48
|
const httpServer = createServer(async (req, res) => {
|
|
@@ -80,8 +78,10 @@ export async function startFrankyMcpServer(deps) {
|
|
|
80
78
|
sessions.set(transport.sessionId, { server, transport });
|
|
81
79
|
}
|
|
82
80
|
});
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
// 使用动态端口(port 0),避免多个 Franky 实例抢占同一端口导致 EADDRINUSE 崩溃
|
|
82
|
+
await new Promise((resolve, reject) => {
|
|
83
|
+
httpServer.on('error', reject);
|
|
84
|
+
httpServer.listen(0, '127.0.0.1', resolve);
|
|
85
85
|
});
|
|
86
86
|
const addr = httpServer.address();
|
|
87
87
|
const port = typeof addr === 'object' && addr !== null ? addr.port : 0;
|
|
@@ -43,8 +43,6 @@ function createMcpServer(deps) {
|
|
|
43
43
|
* 所有工具实现来自 @team-anya/mcp-tools,
|
|
44
44
|
* 这里只负责 HTTP 传输和 session 管理。
|
|
45
45
|
*/
|
|
46
|
-
/** Loid MCP server 固定端口 */
|
|
47
|
-
export const LOID_MCP_PORT = 19510;
|
|
48
46
|
export async function startLoidMcpServer(deps) {
|
|
49
47
|
const sessions = new Map();
|
|
50
48
|
const httpServer = createServer(async (req, res) => {
|
|
@@ -89,8 +87,10 @@ export async function startLoidMcpServer(deps) {
|
|
|
89
87
|
sessions.set(transport.sessionId, { server, transport });
|
|
90
88
|
}
|
|
91
89
|
});
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
// 使用动态端口(port 0),避免重启时旧端口未释放导致 EADDRINUSE
|
|
91
|
+
await new Promise((resolve, reject) => {
|
|
92
|
+
httpServer.on('error', reject);
|
|
93
|
+
httpServer.listen(0, '127.0.0.1', resolve);
|
|
94
94
|
});
|
|
95
95
|
const addr = httpServer.address();
|
|
96
96
|
const port = typeof addr === 'object' && addr !== null ? addr.port : 0;
|
|
@@ -39,8 +39,6 @@ function createYorMcpServer(deps) {
|
|
|
39
39
|
*
|
|
40
40
|
* 所有工具实现来自 @team-anya/mcp-tools。
|
|
41
41
|
*/
|
|
42
|
-
/** Yor MCP server 固定端口 */
|
|
43
|
-
export const YOR_MCP_PORT = 19520;
|
|
44
42
|
export async function startYorMcpServer(deps) {
|
|
45
43
|
const sessions = new Map();
|
|
46
44
|
const httpServer = createServer(async (req, res) => {
|
|
@@ -77,8 +75,10 @@ export async function startYorMcpServer(deps) {
|
|
|
77
75
|
sessions.set(transport.sessionId, { server, transport });
|
|
78
76
|
}
|
|
79
77
|
});
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
// 使用动态端口(port 0),避免多个 Yor 实例抢占同一端口导致 EADDRINUSE 崩溃
|
|
79
|
+
await new Promise((resolve, reject) => {
|
|
80
|
+
httpServer.on('error', reject);
|
|
81
|
+
httpServer.listen(0, '127.0.0.1', resolve);
|
|
82
82
|
});
|
|
83
83
|
const addr = httpServer.address();
|
|
84
84
|
const port = typeof addr === 'object' && addr !== null ? addr.port : 0;
|