@aexol/spectral 0.9.262 → 0.9.264
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/extensions/dataset-uploader/exporter.d.ts +25 -4
- package/dist/extensions/dataset-uploader/exporter.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/exporter.js +37 -6
- package/dist/extensions/dataset-uploader/upload.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/upload.js +12 -4
- package/dist/generated/zeus/const.d.ts.map +1 -1
- package/dist/generated/zeus/const.js +24 -4
- package/dist/generated/zeus/index.d.ts +138 -43
- package/dist/generated/zeus/index.d.ts.map +1 -1
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +23 -4
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +31 -3
- package/dist/mcp/state-getter.d.ts +50 -5
- package/dist/mcp/state-getter.d.ts.map +1 -1
- package/dist/mcp/state-getter.js +78 -7
- package/dist/relay/routing.d.ts.map +1 -1
- package/dist/relay/routing.js +18 -8
- package/dist/server/agent-bridge.d.ts +7 -0
- package/dist/server/agent-bridge.d.ts.map +1 -1
- package/dist/server/agent-bridge.js +20 -1
- package/dist/server/handlers/mcp-reload.d.ts +26 -3
- package/dist/server/handlers/mcp-reload.d.ts.map +1 -1
- package/dist/server/handlers/mcp-reload.js +69 -5
- package/dist/server/handlers/mcp-status.d.ts +14 -0
- package/dist/server/handlers/mcp-status.d.ts.map +1 -1
- package/dist/server/handlers/mcp-status.js +31 -0
- package/package.json +1 -1
package/dist/mcp/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAe,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuBpG,UAAU,gBAAgB;IACxB,EAAE,EAAE,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/config.js
CHANGED
|
@@ -28,11 +28,28 @@ export function getSpectralGlobalConfigPath(overridePath) {
|
|
|
28
28
|
export function getGenericGlobalConfigPath() {
|
|
29
29
|
return GENERIC_GLOBAL_CONFIG_PATH;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Walks upward from `cwd` (starting at `cwd` itself) looking for
|
|
33
|
+
* `join(dir, relativeName)`. Returns the nearest existing match, or null if
|
|
34
|
+
* none is found up to the filesystem root.
|
|
35
|
+
*/
|
|
36
|
+
function findUpNearest(cwd, relativeName) {
|
|
37
|
+
let current = resolve(cwd);
|
|
38
|
+
while (true) {
|
|
39
|
+
const candidate = join(current, relativeName);
|
|
40
|
+
if (existsSync(candidate))
|
|
41
|
+
return candidate;
|
|
42
|
+
const parent = dirname(current);
|
|
43
|
+
if (parent === current)
|
|
44
|
+
return null;
|
|
45
|
+
current = parent;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
31
48
|
export function getProjectConfigPath(cwd = process.cwd()) {
|
|
32
|
-
return resolve(cwd, PROJECT_CONFIG_NAME);
|
|
49
|
+
return findUpNearest(cwd, PROJECT_CONFIG_NAME) ?? resolve(cwd, PROJECT_CONFIG_NAME);
|
|
33
50
|
}
|
|
34
51
|
export function getProjectSpectralConfigPath(cwd = process.cwd()) {
|
|
35
|
-
return resolve(cwd, PROJECT_MCP_CONFIG_NAME);
|
|
52
|
+
return findUpNearest(cwd, PROJECT_MCP_CONFIG_NAME) ?? resolve(cwd, PROJECT_MCP_CONFIG_NAME);
|
|
36
53
|
}
|
|
37
54
|
export function getConfigDiscoveryPaths(overridePath) {
|
|
38
55
|
return getConfigSources(overridePath).map((source) => ({
|
|
@@ -441,12 +458,14 @@ export function buildStarterProjectConfig() {
|
|
|
441
458
|
};
|
|
442
459
|
}
|
|
443
460
|
export function previewStarterProjectConfig(cwd = process.cwd()) {
|
|
444
|
-
|
|
461
|
+
// Always target cwd directly: the starter config must not overwrite an
|
|
462
|
+
// ancestor project's .mcp.json discovered by the upward walk.
|
|
463
|
+
const targetPath = resolve(cwd, PROJECT_CONFIG_NAME);
|
|
445
464
|
const nextRaw = { mcpServers: buildStarterProjectConfig().mcpServers };
|
|
446
465
|
return buildConfigWritePreview(targetPath, nextRaw);
|
|
447
466
|
}
|
|
448
467
|
export function writeStarterProjectConfig(cwd = process.cwd()) {
|
|
449
|
-
const targetPath =
|
|
468
|
+
const targetPath = resolve(cwd, PROJECT_CONFIG_NAME);
|
|
450
469
|
const raw = { mcpServers: buildStarterProjectConfig().mcpServers };
|
|
451
470
|
writeRawConfigObject(targetPath, raw);
|
|
452
471
|
return targetPath;
|
package/dist/mcp/index.d.ts
CHANGED
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,8BAA8B,CAAC;AAa3E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,8BAA8B,CAAC;AAa3E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,cAuUvE"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setLiveMcpStateGetter } from "./state-getter.js";
|
|
1
|
+
import { registerMcpState, setLiveMcpStateGetter, unregisterMcpStateIfCurrent } from "./state-getter.js";
|
|
2
2
|
import { Type } from "typebox";
|
|
3
3
|
import { showTools, reconnectServers, authenticateServer, showSetupStatus } from "./commands.js";
|
|
4
4
|
import { loadMcpConfig } from "./config.js";
|
|
@@ -8,9 +8,20 @@ import { loadMetadataCache } from "./metadata-cache.js";
|
|
|
8
8
|
import { executeAuth, executeCall, executeConnect, executeDescribe, executeSearch, executeStatus, executeUiMessages } from "./proxy-modes.js";
|
|
9
9
|
import { getConfigPathFromArgv, truncateAtWord } from "./utils.js";
|
|
10
10
|
import { initializeOAuth, shutdownOAuth } from "./mcp-auth-flow.js";
|
|
11
|
-
export default function mcpAdapter(ext) {
|
|
11
|
+
export default function mcpAdapter(ext, sessionId) {
|
|
12
12
|
let state = null;
|
|
13
|
-
|
|
13
|
+
// One getter closure serves both the back-compat singleton and the
|
|
14
|
+
// session-scoped registry, so `unregisterMcpStateIfCurrent` can compare
|
|
15
|
+
// the registered accessor by identity (ownership-safe teardown).
|
|
16
|
+
const stateGetter = () => state;
|
|
17
|
+
setLiveMcpStateGetter(stateGetter);
|
|
18
|
+
// Session-scoped registration: the singleton getter above is overwritten
|
|
19
|
+
// by every bridge construction, so serve's reload endpoint addresses
|
|
20
|
+
// states through the per-session registry instead.
|
|
21
|
+
const registeredSessionId = typeof sessionId === "string" && sessionId.length > 0 ? sessionId : null;
|
|
22
|
+
if (registeredSessionId) {
|
|
23
|
+
registerMcpState(registeredSessionId, stateGetter);
|
|
24
|
+
}
|
|
14
25
|
let initPromise = null;
|
|
15
26
|
let lifecycleGeneration = 0;
|
|
16
27
|
async function shutdownState(currentState, reason) {
|
|
@@ -203,6 +214,13 @@ export default function mcpAdapter(ext) {
|
|
|
203
214
|
const currentState = state;
|
|
204
215
|
state = null;
|
|
205
216
|
initPromise = null;
|
|
217
|
+
// Drop the registry entry (ownership-safe + idempotent) so a stale
|
|
218
|
+
// state is never re-addressed by a later reload. If a rebuilt bridge
|
|
219
|
+
// re-registered the same session id first, its getter is current and
|
|
220
|
+
// this stale adapter leaves the newer entry in place.
|
|
221
|
+
if (registeredSessionId) {
|
|
222
|
+
unregisterMcpStateIfCurrent(registeredSessionId, stateGetter);
|
|
223
|
+
}
|
|
206
224
|
try {
|
|
207
225
|
await Promise.all([
|
|
208
226
|
shutdownState(currentState, "session_shutdown"),
|
|
@@ -281,4 +299,14 @@ export default function mcpAdapter(ext) {
|
|
|
281
299
|
await authenticateServer(serverName, state.config, ctx);
|
|
282
300
|
},
|
|
283
301
|
});
|
|
302
|
+
// Teardown hook: `AgentSession.dispose()` never emits `session_shutdown`
|
|
303
|
+
// (only `AgentSessionRuntime.dispose()` does), so `AgentBridge.dispose()`
|
|
304
|
+
// invokes this to drop the registry entry on serve teardown. Ownership-
|
|
305
|
+
// safe — a stale adapter cannot remove a rebuilt bridge's registration
|
|
306
|
+
// for the same session id.
|
|
307
|
+
return () => {
|
|
308
|
+
if (registeredSessionId) {
|
|
309
|
+
unregisterMcpStateIfCurrent(registeredSessionId, stateGetter);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
284
312
|
}
|
|
@@ -1,14 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Shared access to the live `McpExtensionState`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Two access levels:
|
|
5
|
+
*
|
|
6
|
+
* 1. A back-compat module-level singleton (`setLiveMcpStateGetter` /
|
|
7
|
+
* `getLiveMcpState`) — the LAST constructed bridge's state. Set by the
|
|
8
|
+
* MCP adapter extension factory (`mcp/index.ts`) on construction so
|
|
9
|
+
* `serve.ts` can read the current state snapshot without importing the
|
|
10
|
+
* full adapter module.
|
|
11
|
+
*
|
|
12
|
+
* 2. A session-scoped registry (`registerMcpState` / `unregisterMcpState` /
|
|
13
|
+
* `getMcpStateForSession` / `listMcpStates`) — maps each serve session
|
|
14
|
+
* id to that session's live state accessor. The `POST /api/mcp-reload`
|
|
15
|
+
* handler resolves states through this registry so a refresh always
|
|
16
|
+
* hits the right session's project config (the singleton above is
|
|
17
|
+
* overwritten by every bridge construction and must not be used for
|
|
18
|
+
* addressing).
|
|
19
|
+
*
|
|
20
|
+
* Separated into a standalone file so neither side picks up the other's
|
|
21
|
+
* transitive dependencies.
|
|
8
22
|
*/
|
|
9
23
|
import type { McpExtensionState } from "../mcp/state.js";
|
|
10
24
|
/** Read the live MCP state. Returns null until the adapter is constructed. */
|
|
11
25
|
export declare function getLiveMcpState(): McpExtensionState | null;
|
|
12
26
|
/** Set by the MCP adapter factory at construction time. */
|
|
13
27
|
export declare function setLiveMcpStateGetter(getter: () => McpExtensionState | null): void;
|
|
28
|
+
/**
|
|
29
|
+
* Register (or replace) the live-state accessor for a session. Called by
|
|
30
|
+
* the MCP adapter factory at bridge construction time.
|
|
31
|
+
*/
|
|
32
|
+
export declare function registerMcpState(sessionId: string, getter: () => McpExtensionState | null): void;
|
|
33
|
+
/**
|
|
34
|
+
* Remove a session's accessor (idempotent — double-unregister is a no-op).
|
|
35
|
+
* Called by the MCP adapter factory on `session_shutdown`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function unregisterMcpState(sessionId: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Remove a session's accessor ONLY if the registered getter is the one
|
|
40
|
+
* `getter` — ownership-safe unregister. A stale adapter whose bridge was
|
|
41
|
+
* torn down AFTER a rebuilt bridge re-registered the same session id must
|
|
42
|
+
* not delete the newer registration. Idempotent: calling it twice (or with
|
|
43
|
+
* a getter that was never registered) is a no-op.
|
|
44
|
+
*/
|
|
45
|
+
export declare function unregisterMcpStateIfCurrent(sessionId: string, getter: () => McpExtensionState | null): void;
|
|
46
|
+
/**
|
|
47
|
+
* Read one session's live MCP state. Returns `null` when the session has
|
|
48
|
+
* no registered accessor or its state is still initializing.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getMcpStateForSession(sessionId: string): McpExtensionState | null;
|
|
51
|
+
/**
|
|
52
|
+
* All registered sessions that currently have a non-null live state.
|
|
53
|
+
* Sessions still initializing (or shut down) are excluded.
|
|
54
|
+
*/
|
|
55
|
+
export declare function listMcpStates(): Array<{
|
|
56
|
+
sessionId: string;
|
|
57
|
+
state: McpExtensionState;
|
|
58
|
+
}>;
|
|
14
59
|
//# sourceMappingURL=state-getter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-getter.d.ts","sourceRoot":"","sources":["../../src/mcp/state-getter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"state-getter.d.ts","sourceRoot":"","sources":["../../src/mcp/state-getter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASzD,8EAA8E;AAC9E,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAE1D;AAED,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAElF;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,iBAAiB,GAAG,IAAI,GACrC,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,iBAAiB,GAAG,IAAI,GACrC,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAStF"}
|
package/dist/mcp/state-getter.js
CHANGED
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Shared access to the live `McpExtensionState`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Two access levels:
|
|
5
|
+
*
|
|
6
|
+
* 1. A back-compat module-level singleton (`setLiveMcpStateGetter` /
|
|
7
|
+
* `getLiveMcpState`) — the LAST constructed bridge's state. Set by the
|
|
8
|
+
* MCP adapter extension factory (`mcp/index.ts`) on construction so
|
|
9
|
+
* `serve.ts` can read the current state snapshot without importing the
|
|
10
|
+
* full adapter module.
|
|
11
|
+
*
|
|
12
|
+
* 2. A session-scoped registry (`registerMcpState` / `unregisterMcpState` /
|
|
13
|
+
* `getMcpStateForSession` / `listMcpStates`) — maps each serve session
|
|
14
|
+
* id to that session's live state accessor. The `POST /api/mcp-reload`
|
|
15
|
+
* handler resolves states through this registry so a refresh always
|
|
16
|
+
* hits the right session's project config (the singleton above is
|
|
17
|
+
* overwritten by every bridge construction and must not be used for
|
|
18
|
+
* addressing).
|
|
19
|
+
*
|
|
20
|
+
* Separated into a standalone file so neither side picks up the other's
|
|
21
|
+
* transitive dependencies.
|
|
8
22
|
*/
|
|
9
23
|
/**
|
|
10
|
-
*
|
|
11
|
-
* `null` means the adapter hasn't loaded yet or hasn't
|
|
24
|
+
* Back-compat singleton getter, injected by `mcp/index.ts` at adapter
|
|
25
|
+
* construction time. `null` means the adapter hasn't loaded yet or hasn't
|
|
26
|
+
* run `session_start`.
|
|
12
27
|
*/
|
|
13
28
|
let _getter = null;
|
|
14
29
|
/** Read the live MCP state. Returns null until the adapter is constructed. */
|
|
@@ -19,3 +34,59 @@ export function getLiveMcpState() {
|
|
|
19
34
|
export function setLiveMcpStateGetter(getter) {
|
|
20
35
|
_getter = getter;
|
|
21
36
|
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Session-scoped registry
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Live-state accessors per serve session id. Values are getters (not
|
|
42
|
+
* snapshots) because a session's state is `null` while its
|
|
43
|
+
* `session_start` initialization is still in flight.
|
|
44
|
+
*/
|
|
45
|
+
const _sessionGetters = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Register (or replace) the live-state accessor for a session. Called by
|
|
48
|
+
* the MCP adapter factory at bridge construction time.
|
|
49
|
+
*/
|
|
50
|
+
export function registerMcpState(sessionId, getter) {
|
|
51
|
+
_sessionGetters.set(sessionId, getter);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Remove a session's accessor (idempotent — double-unregister is a no-op).
|
|
55
|
+
* Called by the MCP adapter factory on `session_shutdown`.
|
|
56
|
+
*/
|
|
57
|
+
export function unregisterMcpState(sessionId) {
|
|
58
|
+
_sessionGetters.delete(sessionId);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Remove a session's accessor ONLY if the registered getter is the one
|
|
62
|
+
* `getter` — ownership-safe unregister. A stale adapter whose bridge was
|
|
63
|
+
* torn down AFTER a rebuilt bridge re-registered the same session id must
|
|
64
|
+
* not delete the newer registration. Idempotent: calling it twice (or with
|
|
65
|
+
* a getter that was never registered) is a no-op.
|
|
66
|
+
*/
|
|
67
|
+
export function unregisterMcpStateIfCurrent(sessionId, getter) {
|
|
68
|
+
if (_sessionGetters.get(sessionId) === getter) {
|
|
69
|
+
_sessionGetters.delete(sessionId);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Read one session's live MCP state. Returns `null` when the session has
|
|
74
|
+
* no registered accessor or its state is still initializing.
|
|
75
|
+
*/
|
|
76
|
+
export function getMcpStateForSession(sessionId) {
|
|
77
|
+
return _sessionGetters.get(sessionId)?.() ?? null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* All registered sessions that currently have a non-null live state.
|
|
81
|
+
* Sessions still initializing (or shut down) are excluded.
|
|
82
|
+
*/
|
|
83
|
+
export function listMcpStates() {
|
|
84
|
+
const entries = [];
|
|
85
|
+
for (const [sessionId, getter] of _sessionGetters) {
|
|
86
|
+
const state = getter();
|
|
87
|
+
if (state) {
|
|
88
|
+
entries.push({ sessionId, state });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return entries;
|
|
92
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/relay/routing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/relay/routing.ts"],"names":[],"mappings":"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"}
|
package/dist/relay/routing.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { homedir } from "node:os";
|
|
13
13
|
import { BadRequestError } from "../server/handlers/errors.js";
|
|
14
14
|
import { handleStartMcpAuth } from "../server/handlers/mcp-auth.js";
|
|
15
|
-
import {
|
|
15
|
+
import { handleListMcpStatusSessioned } from "../server/handlers/mcp-status.js";
|
|
16
16
|
import { handleReloadMcpConfig } from "../server/handlers/mcp-reload.js";
|
|
17
17
|
import { handlePathAutocomplete } from "../server/handlers/paths-autocomplete.js";
|
|
18
18
|
import { handleGetHomeDirectory } from "../server/handlers/paths-home.js";
|
|
@@ -469,7 +469,7 @@ export async function dispatchRoute(match, body, deps) {
|
|
|
469
469
|
});
|
|
470
470
|
// Reload MCP config so the aexol-mcp extension picks up the new binding.
|
|
471
471
|
if (deps.mcpState) {
|
|
472
|
-
handleReloadMcpConfig(
|
|
472
|
+
handleReloadMcpConfig().catch((err) => {
|
|
473
473
|
logger?.error?.(`[dispatcher] MCP reload after bind failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
474
474
|
});
|
|
475
475
|
}
|
|
@@ -490,7 +490,7 @@ export async function dispatchRoute(match, body, deps) {
|
|
|
490
490
|
});
|
|
491
491
|
// Reload MCP config so the aexol-mcp extension clears the old binding.
|
|
492
492
|
if (deps.mcpState) {
|
|
493
|
-
handleReloadMcpConfig(
|
|
493
|
+
handleReloadMcpConfig().catch((err) => {
|
|
494
494
|
logger?.error?.(`[dispatcher] MCP reload after unbind failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
495
495
|
});
|
|
496
496
|
}
|
|
@@ -653,13 +653,23 @@ export async function dispatchRoute(match, body, deps) {
|
|
|
653
653
|
handleClearPromptQueue(store, manager, id);
|
|
654
654
|
return { ok: true };
|
|
655
655
|
case "list_mcp_status": {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
656
|
+
// Optional `sessionId` query param addresses one session's live MCP
|
|
657
|
+
// state (the singleton `deps.mcpState` is the LAST constructed
|
|
658
|
+
// bridge's and must not be used for addressing). Without one, the
|
|
659
|
+
// handler returns the union of all registered live states.
|
|
660
|
+
const sessionIdParam = match.query?.get("sessionId");
|
|
661
|
+
return handleListMcpStatusSessioned(typeof sessionIdParam === "string" && sessionIdParam.length > 0
|
|
662
|
+
? sessionIdParam
|
|
663
|
+
: undefined);
|
|
660
664
|
}
|
|
661
665
|
case "reload_mcp_config": {
|
|
662
|
-
|
|
666
|
+
// Optional sessionId from the JSON body addresses one session's live
|
|
667
|
+
// MCP state; omitted → reload every attached session's state.
|
|
668
|
+
const bodyObj = asObject(body);
|
|
669
|
+
const sessionId = typeof bodyObj.sessionId === "string" && bodyObj.sessionId.length > 0
|
|
670
|
+
? bodyObj.sessionId
|
|
671
|
+
: undefined;
|
|
672
|
+
return await handleReloadMcpConfig(sessionId);
|
|
663
673
|
}
|
|
664
674
|
case "start_mcp_auth": {
|
|
665
675
|
return await handleStartMcpAuth(deps.mcpState, asObject(body));
|
|
@@ -188,6 +188,13 @@ export declare class AgentBridge {
|
|
|
188
188
|
private sessionManager?;
|
|
189
189
|
private unsubscribe?;
|
|
190
190
|
private pending?;
|
|
191
|
+
/**
|
|
192
|
+
* MCP registry teardown hook returned by the bundled MCP adapter factory.
|
|
193
|
+
* `AgentSession.dispose()` never emits `session_shutdown`, so the bridge
|
|
194
|
+
* invokes this on dispose to drop the session's MCP state registry entry
|
|
195
|
+
* (no-op when the adapter registered no session id, e.g. the CLI path).
|
|
196
|
+
*/
|
|
197
|
+
private mcpTeardown;
|
|
191
198
|
private disposed;
|
|
192
199
|
private opts;
|
|
193
200
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-bridge.d.ts","sourceRoot":"","sources":["../../src/server/agent-bridge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-bridge.d.ts","sourceRoot":"","sources":["../../src/server/agent-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -232,6 +232,13 @@ export class AgentBridge {
|
|
|
232
232
|
sessionManager;
|
|
233
233
|
unsubscribe;
|
|
234
234
|
pending;
|
|
235
|
+
/**
|
|
236
|
+
* MCP registry teardown hook returned by the bundled MCP adapter factory.
|
|
237
|
+
* `AgentSession.dispose()` never emits `session_shutdown`, so the bridge
|
|
238
|
+
* invokes this on dispose to drop the session's MCP state registry entry
|
|
239
|
+
* (no-op when the adapter registered no session id, e.g. the CLI path).
|
|
240
|
+
*/
|
|
241
|
+
mcpTeardown = null;
|
|
235
242
|
disposed = false;
|
|
236
243
|
opts;
|
|
237
244
|
/**
|
|
@@ -419,7 +426,7 @@ export class AgentBridge {
|
|
|
419
426
|
// filesystem-based discovery via jiti fails because the source files are
|
|
420
427
|
// embedded in the binary rather than present on disk.
|
|
421
428
|
extensionFactories.push(async (ext) => {
|
|
422
|
-
mcpAdapterFactory(ext);
|
|
429
|
+
this.mcpTeardown = mcpAdapterFactory(ext, this.opts.sessionId);
|
|
423
430
|
});
|
|
424
431
|
// ResourceLoader with extensions wired in via factories.
|
|
425
432
|
// Each factory's signature `(ext: ExtensionAPI) => Promise<void>` matches
|
|
@@ -1430,6 +1437,18 @@ export class AgentBridge {
|
|
|
1430
1437
|
if (this.disposed)
|
|
1431
1438
|
return;
|
|
1432
1439
|
this.disposed = true;
|
|
1440
|
+
// Drop the MCP state registry entry BEFORE session teardown: without
|
|
1441
|
+
// this, every disposed serve session leaks a live-state entry that the
|
|
1442
|
+
// global "Refresh MCP" reload would keep re-bootstrapping. Ownership-
|
|
1443
|
+
// safe (a rebuilt bridge's newer registration is never removed by a
|
|
1444
|
+
// stale bridge's hook) and idempotent.
|
|
1445
|
+
try {
|
|
1446
|
+
this.mcpTeardown?.();
|
|
1447
|
+
}
|
|
1448
|
+
catch {
|
|
1449
|
+
// ignore — registry cleanup must never block dispose
|
|
1450
|
+
}
|
|
1451
|
+
this.mcpTeardown = null;
|
|
1433
1452
|
this.teardownBindingWatcher();
|
|
1434
1453
|
// Persist the current in-flight message (if any) before tearing down.
|
|
1435
1454
|
// Without this, cancelling mid-turn loses the message along with its
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type { McpExtensionState } from "../../mcp/state.js";
|
|
2
1
|
import { type McpServerStatus } from "./mcp-status.js";
|
|
2
|
+
/**
|
|
3
|
+
* Handler for `POST /api/mcp-reload`.
|
|
4
|
+
*
|
|
5
|
+
* With `sessionId`: reloads exactly that session's live MCP state. Without
|
|
6
|
+
* one: reloads EVERY attached session's live state (a global "Refresh MCP"
|
|
7
|
+
* must refresh each session's own project config). Live states are resolved
|
|
8
|
+
* through the session-scoped registry in `mcp/state-getter.ts` — a missing
|
|
9
|
+
* state yields an explicit non-success result, never a silent no-op.
|
|
10
|
+
*/
|
|
3
11
|
export interface McpReloadResult {
|
|
4
|
-
reloaded:
|
|
12
|
+
reloaded: boolean;
|
|
5
13
|
servers: McpServerStatus[];
|
|
14
|
+
/** Present when nothing was reloaded, explaining why. */
|
|
15
|
+
reason?: "session-not-attached" | "no-live-sessions" | "reload-failed";
|
|
16
|
+
/** Echoed back when a `sessionId` was provided but has no live state. */
|
|
17
|
+
sessionId?: string;
|
|
18
|
+
/** Session ids that were successfully reloaded (only the good ones). */
|
|
19
|
+
sessions?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Per-session reload failures (present only when at least one state's
|
|
22
|
+
* reload threw). The global loop keeps going past a failing state, so
|
|
23
|
+
* `sessions` and `failed` together describe the partial outcome.
|
|
24
|
+
*/
|
|
25
|
+
failed?: Array<{
|
|
26
|
+
sessionId: string;
|
|
27
|
+
error: string;
|
|
28
|
+
}>;
|
|
6
29
|
}
|
|
7
|
-
export declare function handleReloadMcpConfig(
|
|
30
|
+
export declare function handleReloadMcpConfig(sessionId?: string): Promise<McpReloadResult>;
|
|
8
31
|
//# sourceMappingURL=mcp-reload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-reload.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp-reload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-reload.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp-reload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,yDAAyD;IACzD,MAAM,CAAC,EAAE,sBAAsB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACvE,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,wBAAsB,qBAAqB,CACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAmE1B"}
|
|
@@ -1,9 +1,73 @@
|
|
|
1
1
|
import { reloadMcpConfig } from "../../mcp/init.js";
|
|
2
|
+
import { getMcpStateForSession, listMcpStates } from "../../mcp/state-getter.js";
|
|
2
3
|
import { handleListMcpStatus } from "./mcp-status.js";
|
|
3
|
-
export async function handleReloadMcpConfig(
|
|
4
|
-
if (
|
|
5
|
-
|
|
4
|
+
export async function handleReloadMcpConfig(sessionId) {
|
|
5
|
+
if (sessionId) {
|
|
6
|
+
const state = getMcpStateForSession(sessionId);
|
|
7
|
+
if (!state) {
|
|
8
|
+
return {
|
|
9
|
+
reloaded: false,
|
|
10
|
+
servers: [],
|
|
11
|
+
reason: "session-not-attached",
|
|
12
|
+
sessionId,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
await reloadMcpConfig(state);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return {
|
|
20
|
+
reloaded: false,
|
|
21
|
+
servers: [],
|
|
22
|
+
reason: "reload-failed",
|
|
23
|
+
sessionId,
|
|
24
|
+
failed: [{ sessionId, error: errorMessage(error) }],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
reloaded: true,
|
|
29
|
+
servers: handleListMcpStatus(state),
|
|
30
|
+
sessionId,
|
|
31
|
+
sessions: [sessionId],
|
|
32
|
+
};
|
|
6
33
|
}
|
|
7
|
-
|
|
8
|
-
|
|
34
|
+
const entries = listMcpStates();
|
|
35
|
+
if (entries.length === 0) {
|
|
36
|
+
return { reloaded: false, servers: [], reason: "no-live-sessions" };
|
|
37
|
+
}
|
|
38
|
+
// One state's failing reload must not abort the others: each state is
|
|
39
|
+
// reloaded independently, and per-session failures are reported in
|
|
40
|
+
// `failed` alongside the successfully reloaded `sessions`.
|
|
41
|
+
const seen = new Set();
|
|
42
|
+
const servers = [];
|
|
43
|
+
const sessions = [];
|
|
44
|
+
const failed = [];
|
|
45
|
+
for (const { sessionId: sid, state } of entries) {
|
|
46
|
+
try {
|
|
47
|
+
await reloadMcpConfig(state);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
failed.push({ sessionId: sid, error: errorMessage(error) });
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
sessions.push(sid);
|
|
54
|
+
for (const server of handleListMcpStatus(state)) {
|
|
55
|
+
if (!seen.has(server.name)) {
|
|
56
|
+
seen.add(server.name);
|
|
57
|
+
servers.push(server);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (sessions.length === 0) {
|
|
62
|
+
return { reloaded: false, servers: [], reason: "reload-failed", failed };
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
reloaded: true,
|
|
66
|
+
servers,
|
|
67
|
+
sessions,
|
|
68
|
+
...(failed.length > 0 ? { failed } : {}),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function errorMessage(error) {
|
|
72
|
+
return error instanceof Error ? error.message : String(error);
|
|
9
73
|
}
|
|
@@ -24,4 +24,18 @@ export interface McpServerStatus {
|
|
|
24
24
|
failedAt?: number;
|
|
25
25
|
}
|
|
26
26
|
export declare function handleListMcpStatus(state: McpExtensionState): McpServerStatus[];
|
|
27
|
+
/**
|
|
28
|
+
* Session-scoped variant of `GET /api/mcp-status`.
|
|
29
|
+
*
|
|
30
|
+
* - With `sessionId`: returns that session's own live state (empty array
|
|
31
|
+
* when the session has no registered state — never another session's).
|
|
32
|
+
* - Without: returns the UNION of all registered live states, deduplicated
|
|
33
|
+
* by server name with the FIRST occurrence winning (same aggregation as
|
|
34
|
+
* the reload handler).
|
|
35
|
+
*
|
|
36
|
+
* Response shape is identical to `handleListMcpStatus` — a plain
|
|
37
|
+
* `McpServerStatus[]` — so landing's `listMachineMcpStatus()` contract is
|
|
38
|
+
* unchanged.
|
|
39
|
+
*/
|
|
40
|
+
export declare function handleListMcpStatusSessioned(sessionId?: string): McpServerStatus[];
|
|
27
41
|
//# sourceMappingURL=mcp-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAO5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,YAAY,EAAE,OAAO,CAAC;IACtB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,GACvB,eAAe,EAAE,CAiCnB;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,EAAE,CAiBnB"}
|