@n24q02m/mcp-core 1.10.0 → 1.11.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/build/auth/credential-form.d.ts +38 -0
- package/build/auth/credential-form.d.ts.map +1 -1
- package/build/auth/credential-form.js +13 -0
- package/build/auth/credential-form.js.map +1 -1
- package/build/auth/local-oauth-app.d.ts +24 -1
- package/build/auth/local-oauth-app.d.ts.map +1 -1
- package/build/auth/local-oauth-app.js +110 -1
- package/build/auth/local-oauth-app.js.map +1 -1
- package/build/lifecycle/lock.d.ts +76 -12
- package/build/lifecycle/lock.d.ts.map +1 -1
- package/build/lifecycle/lock.js +190 -34
- package/build/lifecycle/lock.js.map +1 -1
- package/build/relay/session.d.ts +12 -0
- package/build/relay/session.d.ts.map +1 -0
- package/build/relay/session.js +55 -0
- package/build/relay/session.js.map +1 -0
- package/build/relay/tool-helpers.d.ts +56 -0
- package/build/relay/tool-helpers.d.ts.map +1 -0
- package/build/relay/tool-helpers.js +60 -0
- package/build/relay/tool-helpers.js.map +1 -0
- package/build/storage/config-file.js +1 -1
- package/build/storage/config-file.js.map +1 -1
- package/build/storage/session-lock.js +1 -1
- package/build/storage/session-lock.js.map +1 -1
- package/build/transport/cache.d.ts +19 -0
- package/build/transport/cache.d.ts.map +1 -0
- package/build/transport/cache.js +67 -0
- package/build/transport/cache.js.map +1 -0
- package/build/transport/smart-stdio.d.ts +64 -0
- package/build/transport/smart-stdio.d.ts.map +1 -1
- package/build/transport/smart-stdio.js +170 -0
- package/build/transport/smart-stdio.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/transport/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAa/D;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EAAE,GACf,IAAI,CASN;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,EAAE,GAAG,IAAI,CAUlB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools-list cache with version-aware key (D10) — TS parity with core-py.
|
|
3
|
+
*
|
|
4
|
+
* Cache filename: ``<server>-<port>-<srvVersion>-<coreVersion>.tools.json``.
|
|
5
|
+
* A mismatch on either ``srvVersion`` (the upstream MCP server's version) or
|
|
6
|
+
* ``coreVersion`` (mcp-core itself) invalidates the cache, so an upgrade on
|
|
7
|
+
* either side never serves a stale tool surface.
|
|
8
|
+
*
|
|
9
|
+
* ``persistToolsCache`` writes via ``.tmp`` + ``rename`` (Windows-safe) and
|
|
10
|
+
* suppresses all filesystem errors with a debug log. This is the D10
|
|
11
|
+
* root-cause fix for ``Failed to persist capabilities cache`` hard-failures
|
|
12
|
+
* (crg #384).
|
|
13
|
+
*/
|
|
14
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
15
|
+
import { homedir } from 'node:os';
|
|
16
|
+
import { dirname, join } from 'node:path';
|
|
17
|
+
// Self-namespace import lets ``vi.spyOn(cacheModule, 'cacheDir' | 'atomicWrite')``
|
|
18
|
+
// intercept internal calls (ESM bindings make plain references unmockable).
|
|
19
|
+
import * as self from './cache.js';
|
|
20
|
+
export function cacheDir() {
|
|
21
|
+
return join(homedir(), '.config', 'mcp', 'cache');
|
|
22
|
+
}
|
|
23
|
+
export function cacheFilename(serverName, port, srvVersion, coreVersion) {
|
|
24
|
+
return `${serverName}-${port}-${srvVersion}-${coreVersion}.tools.json`;
|
|
25
|
+
}
|
|
26
|
+
export function atomicWrite(path, content) {
|
|
27
|
+
const dir = dirname(path);
|
|
28
|
+
if (dir && !existsSync(dir))
|
|
29
|
+
mkdirSync(dir, { recursive: true });
|
|
30
|
+
const tmp = `${path}.tmp`;
|
|
31
|
+
writeFileSync(tmp, content, { encoding: 'utf-8' });
|
|
32
|
+
if (process.platform !== 'win32') {
|
|
33
|
+
try {
|
|
34
|
+
chmodSync(tmp, 0o600);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
/* ignore */
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
renameSync(tmp, path);
|
|
41
|
+
}
|
|
42
|
+
export function persistToolsCache(serverName, port, srvVersion, coreVersion, tools) {
|
|
43
|
+
const path = join(self.cacheDir(), cacheFilename(serverName, port, srvVersion, coreVersion));
|
|
44
|
+
const payload = JSON.stringify({ tools, srvVersion, coreVersion });
|
|
45
|
+
try {
|
|
46
|
+
self.atomicWrite(path, payload);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
// Suppress per D10 — log only.
|
|
50
|
+
console.debug(`Failed to persist capabilities cache for ${serverName}:`, err);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function loadToolsCache(serverName, port, srvVersion, coreVersion) {
|
|
54
|
+
const path = join(self.cacheDir(), cacheFilename(serverName, port, srvVersion, coreVersion));
|
|
55
|
+
if (!existsSync(path))
|
|
56
|
+
return null;
|
|
57
|
+
try {
|
|
58
|
+
const payload = JSON.parse(readFileSync(path, 'utf-8'));
|
|
59
|
+
if (payload.srvVersion !== srvVersion || payload.coreVersion !== coreVersion)
|
|
60
|
+
return null;
|
|
61
|
+
return Array.isArray(payload.tools) ? payload.tools : null;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/transport/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the relay form URL for the alive daemon of `serverName`.
|
|
3
|
+
*
|
|
4
|
+
* Walks the per-user lock directory, parses the first `<server>-*.lock`
|
|
5
|
+
* that contains valid 4/5/6-line metadata, and constructs
|
|
6
|
+
* `http://127.0.0.1:<port>/setup?token=<jwt>` so a Bridge can render a
|
|
7
|
+
* user-facing setup link without going through the OAuth handshake.
|
|
8
|
+
*
|
|
9
|
+
* Throws when no parseable lock file exists for the server. Callers that
|
|
10
|
+
* prefer a soft signal should call `daemonIsAlive` first.
|
|
11
|
+
*/
|
|
12
|
+
export declare function daemonRelayUrl(serverName: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Return `true` when at least one parseable lock file for `serverName`
|
|
15
|
+
* references a process the OS reports as alive. Used by the Bridge when
|
|
16
|
+
* deciding whether `need_setup` envelopes should bridge to a live daemon
|
|
17
|
+
* or trigger an auto-respawn.
|
|
18
|
+
*/
|
|
19
|
+
export declare function daemonIsAlive(serverName: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Return the latest known `credState` for `serverName`. Reads the first
|
|
22
|
+
* parseable lock file and returns its 5th line. Returns `"unconfigured"`
|
|
23
|
+
* if no lock exists, so callers can branch safely on a single string
|
|
24
|
+
* without nullable handling.
|
|
25
|
+
*/
|
|
26
|
+
export declare function daemonCredState(serverName: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Bridge auto-respawn (D8, Task 1.12).
|
|
29
|
+
*
|
|
30
|
+
* When a tool call fails because the daemon backing a transparent bridge
|
|
31
|
+
* has died, the Bridge spawns a fresh daemon and retries -- but only once
|
|
32
|
+
* per `tool_call_id`, so a pathological caller can't infinite-loop the
|
|
33
|
+
* spawn path. ``BridgeAutoRespawn`` tracks the per-call cap; the helper
|
|
34
|
+
* functions below perform the actual spawn + wait-ready dance.
|
|
35
|
+
*/
|
|
36
|
+
export declare const MAX_RESPAWN_PER_CALL_ID = 1;
|
|
37
|
+
/**
|
|
38
|
+
* Per-bridge tracker capping respawn attempts per `tool_call_id`.
|
|
39
|
+
*
|
|
40
|
+
* A bridge instance keeps one of these for the lifetime of an MCP session.
|
|
41
|
+
* Each unique id is allowed exactly `MAX_RESPAWN_PER_CALL_ID` respawn
|
|
42
|
+
* attempt; subsequent attempts within `RESPAWN_TRACK_TTL_MS` are rejected
|
|
43
|
+
* so a buggy caller can't spawn-storm the daemon. Entries older than the
|
|
44
|
+
* TTL are dropped on read so the table doesn't grow without bound.
|
|
45
|
+
*/
|
|
46
|
+
export declare class BridgeAutoRespawn {
|
|
47
|
+
private respawned;
|
|
48
|
+
canRespawn(callId: string): boolean;
|
|
49
|
+
markRespawned(callId: string): void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Async respawn entry point. Production code should prefer this -- it
|
|
53
|
+
* waits for the daemon to come back up before resolving with the relay URL.
|
|
54
|
+
*/
|
|
55
|
+
export declare function daemonRespawnAsync(serverName: string): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Synchronous respawn for callers that match the core-py signature.
|
|
58
|
+
*
|
|
59
|
+
* If a daemon is already alive we return its URL immediately. Otherwise we
|
|
60
|
+
* fire-and-forget the spawn and return an empty string -- the caller is
|
|
61
|
+
* expected to poll via `daemonIsAlive` / `daemonRelayUrl` (or use
|
|
62
|
+
* `daemonRespawnAsync` for the awaitable flow).
|
|
63
|
+
*/
|
|
64
|
+
export declare function daemonRespawn(serverName: string): string;
|
|
1
65
|
export interface ActiveDaemon {
|
|
2
66
|
port: number;
|
|
3
67
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-stdio.d.ts","sourceRoot":"","sources":["../../src/transport/smart-stdio.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smart-stdio.d.ts","sourceRoot":"","sources":["../../src/transport/smart-stdio.ts"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAazD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAazD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAGxC;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAA4B;IAE7C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUnC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGpC;AAgCD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAiBD,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmCtF;AAmGD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GAClF,OAAO,CAAC,MAAM,CAAC,CAsQjB"}
|
|
@@ -3,7 +3,177 @@ import { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from 'nod
|
|
|
3
3
|
import * as os from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import * as readline from 'node:readline';
|
|
6
|
+
import { isAlive, lockDir, parseLock } from '../lifecycle/lock.js';
|
|
6
7
|
import { JWTIssuer } from '../oauth/jwt-issuer.js';
|
|
8
|
+
/**
|
|
9
|
+
* Return the relay form URL for the alive daemon of `serverName`.
|
|
10
|
+
*
|
|
11
|
+
* Walks the per-user lock directory, parses the first `<server>-*.lock`
|
|
12
|
+
* that contains valid 4/5/6-line metadata, and constructs
|
|
13
|
+
* `http://127.0.0.1:<port>/setup?token=<jwt>` so a Bridge can render a
|
|
14
|
+
* user-facing setup link without going through the OAuth handshake.
|
|
15
|
+
*
|
|
16
|
+
* Throws when no parseable lock file exists for the server. Callers that
|
|
17
|
+
* prefer a soft signal should call `daemonIsAlive` first.
|
|
18
|
+
*/
|
|
19
|
+
export function daemonRelayUrl(serverName) {
|
|
20
|
+
const dir = lockDir();
|
|
21
|
+
if (!existsSync(dir))
|
|
22
|
+
throw new Error(`no alive daemon for ${serverName}`);
|
|
23
|
+
for (const filename of readdirSync(dir)) {
|
|
24
|
+
if (!filename.startsWith(`${serverName}-`) || !filename.endsWith('.lock'))
|
|
25
|
+
continue;
|
|
26
|
+
try {
|
|
27
|
+
const meta = parseLock(readFileSync(join(dir, filename), 'utf-8'));
|
|
28
|
+
return `http://127.0.0.1:${meta.port}/setup?token=${meta.token}`;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Skip unparseable lock files; try the next match.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`no alive daemon for ${serverName}`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Return `true` when at least one parseable lock file for `serverName`
|
|
38
|
+
* references a process the OS reports as alive. Used by the Bridge when
|
|
39
|
+
* deciding whether `need_setup` envelopes should bridge to a live daemon
|
|
40
|
+
* or trigger an auto-respawn.
|
|
41
|
+
*/
|
|
42
|
+
export function daemonIsAlive(serverName) {
|
|
43
|
+
const dir = lockDir();
|
|
44
|
+
if (!existsSync(dir))
|
|
45
|
+
return false;
|
|
46
|
+
for (const filename of readdirSync(dir)) {
|
|
47
|
+
if (!filename.startsWith(`${serverName}-`) || !filename.endsWith('.lock'))
|
|
48
|
+
continue;
|
|
49
|
+
try {
|
|
50
|
+
const meta = parseLock(readFileSync(join(dir, filename), 'utf-8'));
|
|
51
|
+
if (isAlive(meta))
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Skip unparseable lock files; try the next match.
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Return the latest known `credState` for `serverName`. Reads the first
|
|
62
|
+
* parseable lock file and returns its 5th line. Returns `"unconfigured"`
|
|
63
|
+
* if no lock exists, so callers can branch safely on a single string
|
|
64
|
+
* without nullable handling.
|
|
65
|
+
*/
|
|
66
|
+
export function daemonCredState(serverName) {
|
|
67
|
+
const dir = lockDir();
|
|
68
|
+
if (!existsSync(dir))
|
|
69
|
+
return 'unconfigured';
|
|
70
|
+
for (const filename of readdirSync(dir)) {
|
|
71
|
+
if (!filename.startsWith(`${serverName}-`) || !filename.endsWith('.lock'))
|
|
72
|
+
continue;
|
|
73
|
+
try {
|
|
74
|
+
const meta = parseLock(readFileSync(join(dir, filename), 'utf-8'));
|
|
75
|
+
return meta.credState;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Skip unparseable lock files; try the next match.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return 'unconfigured';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Bridge auto-respawn (D8, Task 1.12).
|
|
85
|
+
*
|
|
86
|
+
* When a tool call fails because the daemon backing a transparent bridge
|
|
87
|
+
* has died, the Bridge spawns a fresh daemon and retries -- but only once
|
|
88
|
+
* per `tool_call_id`, so a pathological caller can't infinite-loop the
|
|
89
|
+
* spawn path. ``BridgeAutoRespawn`` tracks the per-call cap; the helper
|
|
90
|
+
* functions below perform the actual spawn + wait-ready dance.
|
|
91
|
+
*/
|
|
92
|
+
export const MAX_RESPAWN_PER_CALL_ID = 1;
|
|
93
|
+
const RESPAWN_TRACK_TTL_MS = 5 * 60_000;
|
|
94
|
+
/**
|
|
95
|
+
* Per-bridge tracker capping respawn attempts per `tool_call_id`.
|
|
96
|
+
*
|
|
97
|
+
* A bridge instance keeps one of these for the lifetime of an MCP session.
|
|
98
|
+
* Each unique id is allowed exactly `MAX_RESPAWN_PER_CALL_ID` respawn
|
|
99
|
+
* attempt; subsequent attempts within `RESPAWN_TRACK_TTL_MS` are rejected
|
|
100
|
+
* so a buggy caller can't spawn-storm the daemon. Entries older than the
|
|
101
|
+
* TTL are dropped on read so the table doesn't grow without bound.
|
|
102
|
+
*/
|
|
103
|
+
export class BridgeAutoRespawn {
|
|
104
|
+
constructor() {
|
|
105
|
+
this.respawned = new Map();
|
|
106
|
+
}
|
|
107
|
+
canRespawn(callId) {
|
|
108
|
+
const ts = this.respawned.get(callId);
|
|
109
|
+
if (ts === undefined)
|
|
110
|
+
return true;
|
|
111
|
+
if (Date.now() - ts > RESPAWN_TRACK_TTL_MS) {
|
|
112
|
+
this.respawned.delete(callId);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
markRespawned(callId) {
|
|
118
|
+
this.respawned.set(callId, Date.now());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Spawn `uvx <serverName>` detached from the parent process group.
|
|
123
|
+
*
|
|
124
|
+
* Production wiring intentionally minimal: the daemon publishes its lock
|
|
125
|
+
* file as part of normal startup, so callers poll `daemonIsAlive` /
|
|
126
|
+
* `daemonRelayUrl` to discover it. Tests stub this via `vi.spyOn` so the
|
|
127
|
+
* suite never spawns real subprocesses.
|
|
128
|
+
*/
|
|
129
|
+
function spawnDaemonDetached(serverName) {
|
|
130
|
+
const child = spawn('uvx', [serverName], {
|
|
131
|
+
detached: true,
|
|
132
|
+
stdio: 'ignore',
|
|
133
|
+
windowsHide: true
|
|
134
|
+
});
|
|
135
|
+
child.unref();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Poll `daemonIsAlive` until alive or `timeoutMs` elapses. Mirrors
|
|
139
|
+
* the core-py `_wait_daemon_ready` helper.
|
|
140
|
+
*/
|
|
141
|
+
async function waitDaemonReady(serverName, timeoutMs = 60_000) {
|
|
142
|
+
const deadline = Date.now() + timeoutMs;
|
|
143
|
+
while (Date.now() < deadline) {
|
|
144
|
+
if (daemonIsAlive(serverName))
|
|
145
|
+
return true;
|
|
146
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Async respawn entry point. Production code should prefer this -- it
|
|
152
|
+
* waits for the daemon to come back up before resolving with the relay URL.
|
|
153
|
+
*/
|
|
154
|
+
export async function daemonRespawnAsync(serverName) {
|
|
155
|
+
if (daemonIsAlive(serverName))
|
|
156
|
+
return daemonRelayUrl(serverName);
|
|
157
|
+
spawnDaemonDetached(serverName);
|
|
158
|
+
if (!(await waitDaemonReady(serverName))) {
|
|
159
|
+
throw new Error(`daemon respawn timeout for ${serverName}`);
|
|
160
|
+
}
|
|
161
|
+
return daemonRelayUrl(serverName);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Synchronous respawn for callers that match the core-py signature.
|
|
165
|
+
*
|
|
166
|
+
* If a daemon is already alive we return its URL immediately. Otherwise we
|
|
167
|
+
* fire-and-forget the spawn and return an empty string -- the caller is
|
|
168
|
+
* expected to poll via `daemonIsAlive` / `daemonRelayUrl` (or use
|
|
169
|
+
* `daemonRespawnAsync` for the awaitable flow).
|
|
170
|
+
*/
|
|
171
|
+
export function daemonRespawn(serverName) {
|
|
172
|
+
if (daemonIsAlive(serverName))
|
|
173
|
+
return daemonRelayUrl(serverName);
|
|
174
|
+
spawnDaemonDetached(serverName);
|
|
175
|
+
return '';
|
|
176
|
+
}
|
|
7
177
|
function getLocksDir() {
|
|
8
178
|
return join(os.homedir(), '.config', 'mcp', 'locks');
|
|
9
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-stdio.js","sourceRoot":"","sources":["../../src/transport/smart-stdio.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smart-stdio.js","sourceRoot":"","sources":["../../src/transport/smart-stdio.ts"],"names":[],"mappings":"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"}
|