@trusty-squire/mcp 1.1.11 → 1.1.12
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/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +73 -3
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { ApiClient } from "./api-client.js";
|
|
3
|
+
export declare function shouldIdleExit(now: number, lastActivityAt: number, sessionCount: number, timeoutMs: number, timeoutWithSessionMs: number): boolean;
|
|
3
4
|
export declare function buildServer(api: ApiClient | null): Promise<Server>;
|
|
4
5
|
export declare function installServerProcessGuards(): void;
|
|
5
6
|
export declare function runServer(): Promise<void>;
|
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,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAmE5C,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAGT;AA6BD,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FxE;AA0BD,wBAAgB,0BAA0B,IAAI,IAAI,CAajD;AAID,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAgH/C"}
|
package/dist/server.js
CHANGED
|
@@ -16,12 +16,59 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprot
|
|
|
16
16
|
import { ApiClient } from "./api-client.js";
|
|
17
17
|
import { setSelfManagedChromeTerminationSignalExitEnabled } from "./bot/browser.js";
|
|
18
18
|
import { cancelActiveLoginBrowsers } from "./bot/google-login.js";
|
|
19
|
-
import { closeAllProvisionSessions, withProvisionSessionCall } from "./bot/provision-session.js";
|
|
19
|
+
import { activeSessionCount, closeAllProvisionSessions, withProvisionSessionCall, } from "./bot/provision-session.js";
|
|
20
20
|
import { buildToolRegistry, findTool } from "./tools/index.js";
|
|
21
21
|
import { openSessionStorage } from "./session.js";
|
|
22
22
|
import { VERSION } from "./version.js";
|
|
23
23
|
const SERVER_NAME = "trusty-squire";
|
|
24
24
|
const DEFAULT_REGISTRY_BASE = process.env.ADAPTER_REGISTRY_URL ?? "https://registry.trustysquire.ai";
|
|
25
|
+
// Idle self-exit backstop. transport.onclose / stdin EOF / SIGTERM already
|
|
26
|
+
// exit the process on a well-behaved disconnect (see requestShutdown below).
|
|
27
|
+
// This covers what a live box surfaced instead: a host agent spawns a *new*
|
|
28
|
+
// server on reconnect without ever closing the old child's stdio or signaling
|
|
29
|
+
// it — the old process just sits sleeping on an open pipe forever. No signal
|
|
30
|
+
// from a host like that will ever arrive, so this is a time bound, not an
|
|
31
|
+
// event.
|
|
32
|
+
//
|
|
33
|
+
// It also has to cover a server that still holds an open provision session:
|
|
34
|
+
// the operator-profile-pool ACTIVE-slot reclaim (operator-profile-pool.ts,
|
|
35
|
+
// scavengeActiveSlots) only ever reclaims a slot once its *owning process* is
|
|
36
|
+
// provably dead — a live-but-abandoned zombie server is, by that design, a
|
|
37
|
+
// "genuine concurrent run" the pool must never touch. So a background
|
|
38
|
+
// pool-level reaper cannot free an active session's Chrome on its own; only
|
|
39
|
+
// the owning server exiting (which runs closeAllProvisionSessions, which
|
|
40
|
+
// calls browser.close() on the leased Chrome — already timeout-capped down
|
|
41
|
+
// to a SIGKILL reap, see browser.ts's closeWithProfileGuard) can. Hence two
|
|
42
|
+
// bounds: a short one when idle with no session (routine), and a longer one
|
|
43
|
+
// when a session is still open — wide enough that no real in-flight flow
|
|
44
|
+
// (operate_pay no longer blocks a call for approval; verification polling is
|
|
45
|
+
// bounded in the minutes) should ever cross it, so crossing it is a reliable
|
|
46
|
+
// abandoned-session signal, not a false kill of live work.
|
|
47
|
+
const DEFAULT_IDLE_TIMEOUT_MS = 20 * 60 * 1_000; // 20m, no open session
|
|
48
|
+
const DEFAULT_IDLE_TIMEOUT_WITH_SESSION_MS = 12 * 60 * 60 * 1_000; // 12h, session open
|
|
49
|
+
const DEFAULT_IDLE_CHECK_INTERVAL_MS = 5 * 60 * 1_000; // 5m — must stay well under the 20m bound above
|
|
50
|
+
function envMs(name, fallback) {
|
|
51
|
+
const raw = process.env[name];
|
|
52
|
+
if (raw === undefined)
|
|
53
|
+
return fallback;
|
|
54
|
+
const parsed = Number(raw);
|
|
55
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
56
|
+
}
|
|
57
|
+
function idleTimeoutMs() {
|
|
58
|
+
return envMs("TRUSTY_SQUIRE_SERVER_IDLE_TIMEOUT_MS", DEFAULT_IDLE_TIMEOUT_MS);
|
|
59
|
+
}
|
|
60
|
+
function idleTimeoutWithSessionMs() {
|
|
61
|
+
return envMs("TRUSTY_SQUIRE_SERVER_IDLE_TIMEOUT_WITH_SESSION_MS", DEFAULT_IDLE_TIMEOUT_WITH_SESSION_MS);
|
|
62
|
+
}
|
|
63
|
+
function idleCheckIntervalMs() {
|
|
64
|
+
return envMs("TRUSTY_SQUIRE_SERVER_IDLE_CHECK_INTERVAL_MS", DEFAULT_IDLE_CHECK_INTERVAL_MS);
|
|
65
|
+
}
|
|
66
|
+
// Exported for unit testing; kept pure so the branches (recent activity,
|
|
67
|
+
// no-session idle, session-open idle) don't need a live process/interval.
|
|
68
|
+
export function shouldIdleExit(now, lastActivityAt, sessionCount, timeoutMs, timeoutWithSessionMs) {
|
|
69
|
+
const threshold = sessionCount === 0 ? timeoutMs : timeoutWithSessionMs;
|
|
70
|
+
return now - lastActivityAt >= threshold;
|
|
71
|
+
}
|
|
25
72
|
// Injected into the model's system prompt every turn (≤2KB). Teaches
|
|
26
73
|
// the routing between store / use / request so the agent reaches for
|
|
27
74
|
// the right credential tool without the user spelling it out.
|
|
@@ -179,9 +226,10 @@ export async function runServer() {
|
|
|
179
226
|
// A stdio client can disappear without sending a signal (for example when
|
|
180
227
|
// its parent agent exits). Chrome keeps Node's event loop alive in that
|
|
181
228
|
// case, so close every active provisioning browser and explicitly exit.
|
|
182
|
-
// Keep the single promise so EOF, transport closure,
|
|
183
|
-
// together cannot run teardown twice.
|
|
229
|
+
// Keep the single promise so EOF, transport closure, a signal, and the
|
|
230
|
+
// idle backstop below racing together cannot run teardown twice.
|
|
184
231
|
let shutdown;
|
|
232
|
+
let idleTimer;
|
|
185
233
|
const requestShutdown = () => {
|
|
186
234
|
if (shutdown !== undefined)
|
|
187
235
|
return;
|
|
@@ -190,6 +238,8 @@ export async function runServer() {
|
|
|
190
238
|
process.stdin.removeListener("close", requestShutdown);
|
|
191
239
|
process.removeListener("SIGTERM", requestShutdown);
|
|
192
240
|
process.removeListener("SIGINT", requestShutdown);
|
|
241
|
+
if (idleTimer !== undefined)
|
|
242
|
+
clearInterval(idleTimer);
|
|
193
243
|
try {
|
|
194
244
|
// The OAuth-bootstrap login Chrome (google-login) is tracked apart
|
|
195
245
|
// from provision sessions — drain it too so it cannot outlive the
|
|
@@ -218,6 +268,26 @@ export async function runServer() {
|
|
|
218
268
|
process.stdin.once("close", requestShutdown);
|
|
219
269
|
process.once("SIGTERM", requestShutdown);
|
|
220
270
|
process.once("SIGINT", requestShutdown);
|
|
271
|
+
// Protocol.connect chains transport.onmessage the same way it chains
|
|
272
|
+
// onclose (see the comment above), so this sees every inbound message —
|
|
273
|
+
// requests, notifications, pings — not just tool calls, without having to
|
|
274
|
+
// reach into buildServer's request handlers.
|
|
275
|
+
let lastActivityAt = Date.now();
|
|
276
|
+
transport.onmessage = () => {
|
|
277
|
+
lastActivityAt = Date.now();
|
|
278
|
+
};
|
|
279
|
+
idleTimer = setInterval(() => {
|
|
280
|
+
if (shutdown !== undefined)
|
|
281
|
+
return;
|
|
282
|
+
const sessionCount = activeSessionCount();
|
|
283
|
+
if (!shouldIdleExit(Date.now(), lastActivityAt, sessionCount, idleTimeoutMs(), idleTimeoutWithSessionMs())) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
process.stderr.write(`[trusty-squire] server idle with ${sessionCount} open session(s) and no client ` +
|
|
287
|
+
`activity past the bound; exiting (this tears down any open session's browser)\n`);
|
|
288
|
+
requestShutdown();
|
|
289
|
+
}, idleCheckIntervalMs());
|
|
290
|
+
idleTimer.unref();
|
|
221
291
|
await server.connect(transport);
|
|
222
292
|
}
|
|
223
293
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,cAAc;AACd,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,EAAE;AACF,qEAAqE;AACrE,+DAA+D;AAC/D,qEAAqE;AACrE,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gDAAgD,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|