instar 1.3.682 → 1.3.684
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/core/DynamicMcpManager.d.ts +105 -0
- package/dist/core/DynamicMcpManager.d.ts.map +1 -0
- package/dist/core/DynamicMcpManager.js +119 -0
- package/dist/core/DynamicMcpManager.js.map +1 -0
- package/dist/core/DynamicMcpService.d.ts +60 -0
- package/dist/core/DynamicMcpService.d.ts.map +1 -0
- package/dist/core/DynamicMcpService.js +76 -0
- package/dist/core/DynamicMcpService.js.map +1 -0
- package/dist/core/McpApprovalNonceStore.d.ts +46 -0
- package/dist/core/McpApprovalNonceStore.d.ts.map +1 -0
- package/dist/core/McpApprovalNonceStore.js +83 -0
- package/dist/core/McpApprovalNonceStore.js.map +1 -0
- package/dist/core/McpLoadedSetStore.d.ts +39 -0
- package/dist/core/McpLoadedSetStore.d.ts.map +1 -0
- package/dist/core/McpLoadedSetStore.js +82 -0
- package/dist/core/McpLoadedSetStore.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +21 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionManager.d.ts +20 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +89 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/dynamicMcpConfig.d.ts +141 -0
- package/dist/core/dynamicMcpConfig.d.ts.map +1 -0
- package/dist/core/dynamicMcpConfig.js +125 -0
- package/dist/core/dynamicMcpConfig.js.map +1 -0
- package/dist/core/frameworkSessionLaunch.d.ts +11 -0
- package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
- package/dist/core/frameworkSessionLaunch.js +7 -0
- package/dist/core/frameworkSessionLaunch.js.map +1 -1
- package/dist/core/mcpPidCapture.d.ts +43 -0
- package/dist/core/mcpPidCapture.d.ts.map +1 -0
- package/dist/core/mcpPidCapture.js +44 -0
- package/dist/core/mcpPidCapture.js.map +1 -0
- package/dist/core/types.d.ts +27 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/McpIdleOffloadSweep.d.ts +61 -0
- package/dist/monitoring/McpIdleOffloadSweep.d.ts.map +1 -0
- package/dist/monitoring/McpIdleOffloadSweep.js +89 -0
- package/dist/monitoring/McpIdleOffloadSweep.js.map +1 -0
- package/dist/monitoring/ProcessFootprintMonitor.d.ts +104 -0
- package/dist/monitoring/ProcessFootprintMonitor.d.ts.map +1 -0
- package/dist/monitoring/ProcessFootprintMonitor.js +183 -0
- package/dist/monitoring/ProcessFootprintMonitor.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +10 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/mcpIdleLiveOffload.d.ts +68 -0
- package/dist/monitoring/mcpIdleLiveOffload.d.ts.map +1 -0
- package/dist/monitoring/mcpIdleLiveOffload.js +59 -0
- package/dist/monitoring/mcpIdleLiveOffload.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +4 -2
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +5 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +191 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +6 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +62 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +4 -2
- package/upgrades/1.3.683.md +48 -0
- package/upgrades/1.3.684.md +62 -0
- package/upgrades/process-footprint-monitor.eli16.md +47 -0
- package/upgrades/side-effects/dynamic-mcp-awareness.md +36 -0
- package/upgrades/side-effects/dynamic-mcp-baseline-at-spawn.md +74 -0
- package/upgrades/side-effects/dynamic-mcp-capability-classification.md +36 -0
- package/upgrades/side-effects/dynamic-mcp-driver.md +53 -0
- package/upgrades/side-effects/dynamic-mcp-idle-sweep.md +40 -0
- package/upgrades/side-effects/dynamic-mcp-launch-resolver.md +44 -0
- package/upgrades/side-effects/dynamic-mcp-loaded-set-store.md +37 -0
- package/upgrades/side-effects/dynamic-mcp-nonce-store.md +38 -0
- package/upgrades/side-effects/dynamic-mcp-pure-cores.md +53 -0
- package/upgrades/side-effects/dynamic-mcp-real-offload.md +57 -0
- package/upgrades/side-effects/dynamic-mcp-routes-wiring.md +59 -0
- package/upgrades/side-effects/dynamic-mcp-service.md +41 -0
- package/upgrades/side-effects/dynamic-mcp-sweep-wiring.md +46 -0
- package/upgrades/side-effects/process-footprint-monitor.md +69 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic MCP config — the pure core of the on-demand MCP-server lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code fixes a session's MCP server set AT LAUNCH (it reads the project's
|
|
5
|
+
* `.mcp.json`, or an explicit `--mcp-config`). MCP servers are heavy and mostly
|
|
6
|
+
* idle (a whole Chromium for Playwright, an Electron bridge) and were a dominant
|
|
7
|
+
* share of the steady-state process footprint behind the 2026-06-26 resource
|
|
8
|
+
* panic. There is no hot-reload: changing a session's MCP set requires relaunching
|
|
9
|
+
* it with a different `--mcp-config` (a `claude --resume` keeps the conversation).
|
|
10
|
+
*
|
|
11
|
+
* Justin's correction (2026-06-27): a topic's MCP needs are NOT knowable at launch
|
|
12
|
+
* and must be changeable MID-SESSION (a restart is acceptable). So this is NOT a
|
|
13
|
+
* static per-topic profile. It is a small, mechanical state model:
|
|
14
|
+
*
|
|
15
|
+
* - resolveBaselineServers — the lean set a session LAUNCHES with (opt-in trim).
|
|
16
|
+
* - mutateLoadedServers — load/offload one server from the running set
|
|
17
|
+
* (the caller then rewrites the config + restarts).
|
|
18
|
+
*
|
|
19
|
+
* Policy lives OUTSIDE this module: WHEN to offload an idle server is decided by
|
|
20
|
+
* `decideIdleLiveOffload` (mcpIdleLiveOffload.ts); WHAT to keep warm is config.
|
|
21
|
+
* This module only computes the resulting server set, purely + deterministically,
|
|
22
|
+
* so the decision boundaries are unit-testable in isolation. It NEVER spawns,
|
|
23
|
+
* kills, or writes anything.
|
|
24
|
+
*
|
|
25
|
+
* Default-no-op + dark: with the feature off, `resolveBaselineServers` returns
|
|
26
|
+
* `null` ⇒ the caller adds NO `--mcp-config` flag ⇒ Claude reads the full
|
|
27
|
+
* `.mcp.json` exactly as today. A session only loses a server by EXPLICIT
|
|
28
|
+
* configuration or an explicit offload request.
|
|
29
|
+
*/
|
|
30
|
+
/** The minimal `.mcp.json` shape we read/filter. */
|
|
31
|
+
export interface McpJson {
|
|
32
|
+
mcpServers?: Record<string, unknown>;
|
|
33
|
+
[k: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Filter a parsed `.mcp.json` down to the allowed server set, preserving every
|
|
37
|
+
* other top-level field. Unknown names in `allowed` are ignored (they can't be
|
|
38
|
+
* launched). Pure — returns a new object, never mutates the input.
|
|
39
|
+
*/
|
|
40
|
+
export declare function filterMcpConfig(full: McpJson, allowed: string[]): McpJson;
|
|
41
|
+
/** The `dynamicMcp` config shape (all optional; absence ⇒ no-op). */
|
|
42
|
+
export interface DynamicMcpConfig {
|
|
43
|
+
/** Master switch — DARK by default. Off ⇒ resolution returns null (full .mcp.json). */
|
|
44
|
+
enabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Server names launched at baseline (the lean warm set). When provided, a
|
|
47
|
+
* session launches with ONLY the intersection of this list and the servers
|
|
48
|
+
* that actually exist in `.mcp.json`. When OMITTED (but enabled), the baseline
|
|
49
|
+
* is the FULL `.mcp.json` (no trim) — trimming is an explicit per-agent opt-in
|
|
50
|
+
* for an agent that has additional heavy dynamic servers. Justin's default
|
|
51
|
+
* intent: Playwright stays warm ("used often"); a heavy non-Playwright server
|
|
52
|
+
* is dynamic. Light stdio bridges (threadline/instar) are cheap and stay.
|
|
53
|
+
*/
|
|
54
|
+
keepWarm?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* The automatic idle-offload sweep (McpIdleOffloadSweep). Off by default; runs
|
|
57
|
+
* ONLY when `enabled` AND `sweep.enabled` are both true. `dryRun` defaults true
|
|
58
|
+
* (logs "would offload" without acting). `idleOffloadMs` is the continuous-idle
|
|
59
|
+
* window before a heavy server becomes offload-eligible; `intervalMs` the tick.
|
|
60
|
+
*/
|
|
61
|
+
sweep?: {
|
|
62
|
+
enabled?: boolean;
|
|
63
|
+
dryRun?: boolean;
|
|
64
|
+
idleOffloadMs?: number;
|
|
65
|
+
intervalMs?: number;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve which MCP servers a session should LAUNCH with, given the names that
|
|
70
|
+
* exist in `.mcp.json`. Returns `null` when the full `.mcp.json` should be used
|
|
71
|
+
* unchanged (the default): the feature is disabled. When enabled with no
|
|
72
|
+
* `keepWarm`, also returns null (no trim — explicit opt-in only). When enabled
|
|
73
|
+
* WITH `keepWarm`, returns the (de-duped) intersection with the real servers.
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveBaselineServers(allServerNames: string[], cfg: DynamicMcpConfig | undefined): string[] | null;
|
|
76
|
+
/** A single load/offload request against a session's currently-loaded server set. */
|
|
77
|
+
export interface McpMutateOp {
|
|
78
|
+
kind: 'load' | 'offload';
|
|
79
|
+
/** The `.mcp.json` server name to add or remove. */
|
|
80
|
+
server: string;
|
|
81
|
+
}
|
|
82
|
+
export interface McpMutateResult {
|
|
83
|
+
/** Whether the resulting set differs from `current` (⇒ a restart is warranted). */
|
|
84
|
+
changed: boolean;
|
|
85
|
+
/** The resulting server set (always a fresh, de-duped, sorted-stable array). */
|
|
86
|
+
servers: string[];
|
|
87
|
+
/** Machine-readable outcome for audit/tests. */
|
|
88
|
+
reason: 'loaded' | 'already-loaded' | 'unknown-server' | 'offloaded' | 'not-loaded';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Apply ONE load/offload op to a session's currently-loaded server set.
|
|
92
|
+
* Purely mechanical — POLICY (when to offload, what to keep warm) lives elsewhere.
|
|
93
|
+
* - load an UNKNOWN server (not in `.mcp.json`) → rejected (`unknown-server`,
|
|
94
|
+
* no change): you cannot launch a server that isn't defined.
|
|
95
|
+
* - load an ALREADY-loaded server → no-op (`already-loaded`).
|
|
96
|
+
* - load a known, absent server → added (`loaded`).
|
|
97
|
+
* - offload an absent server → no-op (`not-loaded`).
|
|
98
|
+
* - offload a present server → removed (`offloaded`).
|
|
99
|
+
* Never mutates the input arrays.
|
|
100
|
+
*/
|
|
101
|
+
export declare function mutateLoadedServers(current: string[], allServerNames: string[], op: McpMutateOp): McpMutateResult;
|
|
102
|
+
export declare const DEFAULT_DYNAMIC_MCP_CONFIG: DynamicMcpConfig;
|
|
103
|
+
/**
|
|
104
|
+
* The per-spawn inputs to the launch-set resolution (all already gathered by the
|
|
105
|
+
* caller, which does the IO). Kept pure so the load-bearing RESOLUTION ORDER —
|
|
106
|
+
* the part a wrong move strands a session on — is unit-testable in isolation.
|
|
107
|
+
*/
|
|
108
|
+
export interface SessionMcpResolutionInput {
|
|
109
|
+
/** The feature switch AS ALREADY RESOLVED by the caller (dev-agent gate /
|
|
110
|
+
* explicit flag). The pure resolver does not re-derive it. */
|
|
111
|
+
enabled: boolean;
|
|
112
|
+
/** The launching session's framework. MCP `--mcp-config` is Claude-Code-specific. */
|
|
113
|
+
framework: string;
|
|
114
|
+
/** Servers from a COMMITTED loaded-set state file, or null if none/un-committed. */
|
|
115
|
+
committedStateServers: string[] | null;
|
|
116
|
+
/** True iff a state file EXISTS but could not be read/parsed (drives the M6
|
|
117
|
+
* fail-toward-lean-baseline, not fail-toward-full-config, decision). */
|
|
118
|
+
stateFileUnreadable: boolean;
|
|
119
|
+
/** `resolveBaselineServers(...)` result (the lean set, or null = full config). */
|
|
120
|
+
baselineServers: string[] | null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Resolve which MCP servers a session should LAUNCH with — the gate ORDER is
|
|
124
|
+
* load-bearing (folds convergence findings C3 + M6):
|
|
125
|
+
* 1. enabled-gate: off ⇒ null (full .mcp.json). Checked FIRST, before any state
|
|
126
|
+
* file, so disabling the feature is a clean no-op even for a topic whose
|
|
127
|
+
* state file says ["threadline"] (it would otherwise relaunch trimmed +
|
|
128
|
+
* stranded after rollback). [C3]
|
|
129
|
+
* 2. framework-gate: non-claude-code ⇒ null (MCP flags are Claude-specific).
|
|
130
|
+
* 3. committed state file ⇒ its servers (an un-committed file was passed as null
|
|
131
|
+
* by the caller — the two-phase-commit contract).
|
|
132
|
+
* 4. state file unreadable ⇒ the LEAN baseline (NOT full config) — a transient
|
|
133
|
+
* state-dir error must not relaunch every heavy server warm and re-create the
|
|
134
|
+
* exhaustion condition. [M6]
|
|
135
|
+
* 5. baseline ⇒ its servers.
|
|
136
|
+
* 6. null (full .mcp.json — the default).
|
|
137
|
+
* Returns the allowed server-name list to filter `.mcp.json` to, or `null` when
|
|
138
|
+
* the full `.mcp.json` should be used unchanged.
|
|
139
|
+
*/
|
|
140
|
+
export declare function resolveSessionMcpServers(input: SessionMcpResolutionInput): string[] | null;
|
|
141
|
+
//# sourceMappingURL=dynamicMcpConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamicMcpConfig.d.ts","sourceRoot":"","sources":["../../src/core/dynamicMcpConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,oDAAoD;AACpD,MAAM,WAAW,OAAO;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAQzE;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EAAE,EACxB,GAAG,EAAE,gBAAgB,GAAG,SAAS,GAChC,MAAM,EAAE,GAAG,IAAI,CAMjB;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,MAAM,EACF,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,WAAW,GACX,YAAY,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,MAAM,EAAE,EACxB,EAAE,EAAE,WAAW,GACd,eAAe,CAsBjB;AAED,eAAO,MAAM,0BAA0B,EAAE,gBAExC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;mEAC+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvC;6EACyE;IACzE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kFAAkF;IAClF,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,yBAAyB,GAAG,MAAM,EAAE,GAAG,IAAI,CAM1F"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic MCP config — the pure core of the on-demand MCP-server lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code fixes a session's MCP server set AT LAUNCH (it reads the project's
|
|
5
|
+
* `.mcp.json`, or an explicit `--mcp-config`). MCP servers are heavy and mostly
|
|
6
|
+
* idle (a whole Chromium for Playwright, an Electron bridge) and were a dominant
|
|
7
|
+
* share of the steady-state process footprint behind the 2026-06-26 resource
|
|
8
|
+
* panic. There is no hot-reload: changing a session's MCP set requires relaunching
|
|
9
|
+
* it with a different `--mcp-config` (a `claude --resume` keeps the conversation).
|
|
10
|
+
*
|
|
11
|
+
* Justin's correction (2026-06-27): a topic's MCP needs are NOT knowable at launch
|
|
12
|
+
* and must be changeable MID-SESSION (a restart is acceptable). So this is NOT a
|
|
13
|
+
* static per-topic profile. It is a small, mechanical state model:
|
|
14
|
+
*
|
|
15
|
+
* - resolveBaselineServers — the lean set a session LAUNCHES with (opt-in trim).
|
|
16
|
+
* - mutateLoadedServers — load/offload one server from the running set
|
|
17
|
+
* (the caller then rewrites the config + restarts).
|
|
18
|
+
*
|
|
19
|
+
* Policy lives OUTSIDE this module: WHEN to offload an idle server is decided by
|
|
20
|
+
* `decideIdleLiveOffload` (mcpIdleLiveOffload.ts); WHAT to keep warm is config.
|
|
21
|
+
* This module only computes the resulting server set, purely + deterministically,
|
|
22
|
+
* so the decision boundaries are unit-testable in isolation. It NEVER spawns,
|
|
23
|
+
* kills, or writes anything.
|
|
24
|
+
*
|
|
25
|
+
* Default-no-op + dark: with the feature off, `resolveBaselineServers` returns
|
|
26
|
+
* `null` ⇒ the caller adds NO `--mcp-config` flag ⇒ Claude reads the full
|
|
27
|
+
* `.mcp.json` exactly as today. A session only loses a server by EXPLICIT
|
|
28
|
+
* configuration or an explicit offload request.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Filter a parsed `.mcp.json` down to the allowed server set, preserving every
|
|
32
|
+
* other top-level field. Unknown names in `allowed` are ignored (they can't be
|
|
33
|
+
* launched). Pure — returns a new object, never mutates the input.
|
|
34
|
+
*/
|
|
35
|
+
export function filterMcpConfig(full, allowed) {
|
|
36
|
+
const allowSet = new Set(allowed);
|
|
37
|
+
const srcServers = (full && typeof full === 'object' ? full.mcpServers : undefined) ?? {};
|
|
38
|
+
const filtered = {};
|
|
39
|
+
for (const [name, def] of Object.entries(srcServers)) {
|
|
40
|
+
if (allowSet.has(name))
|
|
41
|
+
filtered[name] = def;
|
|
42
|
+
}
|
|
43
|
+
return { ...full, mcpServers: filtered };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve which MCP servers a session should LAUNCH with, given the names that
|
|
47
|
+
* exist in `.mcp.json`. Returns `null` when the full `.mcp.json` should be used
|
|
48
|
+
* unchanged (the default): the feature is disabled. When enabled with no
|
|
49
|
+
* `keepWarm`, also returns null (no trim — explicit opt-in only). When enabled
|
|
50
|
+
* WITH `keepWarm`, returns the (de-duped) intersection with the real servers.
|
|
51
|
+
*/
|
|
52
|
+
export function resolveBaselineServers(allServerNames, cfg) {
|
|
53
|
+
if (!cfg || cfg.enabled !== true)
|
|
54
|
+
return null;
|
|
55
|
+
if (!Array.isArray(cfg.keepWarm))
|
|
56
|
+
return null; // enabled but no trim configured ⇒ full set
|
|
57
|
+
const exists = new Set(allServerNames);
|
|
58
|
+
const warm = cfg.keepWarm.filter((s) => typeof s === 'string' && s.length > 0 && exists.has(s));
|
|
59
|
+
return [...new Set(warm)];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Apply ONE load/offload op to a session's currently-loaded server set.
|
|
63
|
+
* Purely mechanical — POLICY (when to offload, what to keep warm) lives elsewhere.
|
|
64
|
+
* - load an UNKNOWN server (not in `.mcp.json`) → rejected (`unknown-server`,
|
|
65
|
+
* no change): you cannot launch a server that isn't defined.
|
|
66
|
+
* - load an ALREADY-loaded server → no-op (`already-loaded`).
|
|
67
|
+
* - load a known, absent server → added (`loaded`).
|
|
68
|
+
* - offload an absent server → no-op (`not-loaded`).
|
|
69
|
+
* - offload a present server → removed (`offloaded`).
|
|
70
|
+
* Never mutates the input arrays.
|
|
71
|
+
*/
|
|
72
|
+
export function mutateLoadedServers(current, allServerNames, op) {
|
|
73
|
+
const set = new Set(current.filter((s) => typeof s === 'string' && s.length > 0));
|
|
74
|
+
const known = new Set(allServerNames);
|
|
75
|
+
const server = op.server;
|
|
76
|
+
if (op.kind === 'load') {
|
|
77
|
+
if (!known.has(server)) {
|
|
78
|
+
return { changed: false, servers: [...set], reason: 'unknown-server' };
|
|
79
|
+
}
|
|
80
|
+
if (set.has(server)) {
|
|
81
|
+
return { changed: false, servers: [...set], reason: 'already-loaded' };
|
|
82
|
+
}
|
|
83
|
+
set.add(server);
|
|
84
|
+
return { changed: true, servers: [...set], reason: 'loaded' };
|
|
85
|
+
}
|
|
86
|
+
// offload
|
|
87
|
+
if (!set.has(server)) {
|
|
88
|
+
return { changed: false, servers: [...set], reason: 'not-loaded' };
|
|
89
|
+
}
|
|
90
|
+
set.delete(server);
|
|
91
|
+
return { changed: true, servers: [...set], reason: 'offloaded' };
|
|
92
|
+
}
|
|
93
|
+
export const DEFAULT_DYNAMIC_MCP_CONFIG = {
|
|
94
|
+
enabled: false,
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Resolve which MCP servers a session should LAUNCH with — the gate ORDER is
|
|
98
|
+
* load-bearing (folds convergence findings C3 + M6):
|
|
99
|
+
* 1. enabled-gate: off ⇒ null (full .mcp.json). Checked FIRST, before any state
|
|
100
|
+
* file, so disabling the feature is a clean no-op even for a topic whose
|
|
101
|
+
* state file says ["threadline"] (it would otherwise relaunch trimmed +
|
|
102
|
+
* stranded after rollback). [C3]
|
|
103
|
+
* 2. framework-gate: non-claude-code ⇒ null (MCP flags are Claude-specific).
|
|
104
|
+
* 3. committed state file ⇒ its servers (an un-committed file was passed as null
|
|
105
|
+
* by the caller — the two-phase-commit contract).
|
|
106
|
+
* 4. state file unreadable ⇒ the LEAN baseline (NOT full config) — a transient
|
|
107
|
+
* state-dir error must not relaunch every heavy server warm and re-create the
|
|
108
|
+
* exhaustion condition. [M6]
|
|
109
|
+
* 5. baseline ⇒ its servers.
|
|
110
|
+
* 6. null (full .mcp.json — the default).
|
|
111
|
+
* Returns the allowed server-name list to filter `.mcp.json` to, or `null` when
|
|
112
|
+
* the full `.mcp.json` should be used unchanged.
|
|
113
|
+
*/
|
|
114
|
+
export function resolveSessionMcpServers(input) {
|
|
115
|
+
if (!input.enabled)
|
|
116
|
+
return null; // [C3] enabled-gate FIRST
|
|
117
|
+
if (input.framework !== 'claude-code')
|
|
118
|
+
return null;
|
|
119
|
+
if (input.committedStateServers !== null)
|
|
120
|
+
return input.committedStateServers;
|
|
121
|
+
if (input.stateFileUnreadable)
|
|
122
|
+
return input.baselineServers; // [M6] lean, not full
|
|
123
|
+
return input.baselineServers;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=dynamicMcpConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamicMcpConfig.js","sourceRoot":"","sources":["../../src/core/dynamicMcpConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,17 @@ export interface InteractiveLaunchOptions {
|
|
|
100
100
|
* non-claude frameworks. NEVER a token — just the login location.
|
|
101
101
|
*/
|
|
102
102
|
configHome?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Dynamic MCP Lifecycle (claude-code only): the MCP-config CLI flags this
|
|
105
|
+
* session should launch with — e.g. `['--strict-mcp-config', '--mcp-config',
|
|
106
|
+
* '<filtered.json>']` to launch with only a lean subset of `.mcp.json`. Built
|
|
107
|
+
* by `SessionManager.buildSessionMcpFlags` (state-file/baseline resolution,
|
|
108
|
+
* fail-safe to `[]`). An empty/absent array ⇒ no flags ⇒ Claude reads the full
|
|
109
|
+
* project `.mcp.json` exactly as today (the dark default). No effect on
|
|
110
|
+
* non-claude frameworks (their builders ignore it — MCP `--mcp-config` is
|
|
111
|
+
* Claude-Code-specific). See DYNAMIC-MCP-LIFECYCLE-SPEC.
|
|
112
|
+
*/
|
|
113
|
+
mcpFlags?: string[];
|
|
103
114
|
/**
|
|
104
115
|
* Topic Profile §6 — per-topic thinking mode. Mapped per framework:
|
|
105
116
|
* - claude-code: `--effort <low|medium|high|max>` (the live CLI's verified
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkSessionLaunch.d.ts","sourceRoot":"","sources":["../../src/core/frameworkSessionLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,qBAAqB,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAsDpB;AAmBD,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IAC1E;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3C;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;
|
|
1
|
+
{"version":3,"file":"frameworkSessionLaunch.d.ts","sourceRoot":"","sources":["../../src/core/frameworkSessionLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,qBAAqB,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAsDpB;AAmBD,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IAC1E;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3C;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAgPD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,qBAAqB,EAChC,OAAO,EAAE,wBAAwB,GAChC,qBAAqB,CAMvB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC7C,GAAG,qBAAqB,CAExB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IAC1E;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3C;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAuJD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,OAAO,EAAE,qBAAqB,GAC7B,kBAAkB,CAMpB;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,YAAY,GAAG,SAAS,GAC7B,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAa1C;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,YAAY,GAAG,SAAS,GAC7B,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAc5C;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,MAAM,EAAE,CAUX"}
|
|
@@ -163,6 +163,13 @@ const claudeCodeBuilder = (options) => {
|
|
|
163
163
|
if (options.configHome) {
|
|
164
164
|
envOverrides.CLAUDE_CONFIG_DIR = options.configHome;
|
|
165
165
|
}
|
|
166
|
+
// Dynamic MCP Lifecycle (claude-code only): launch with a lean/explicit MCP set
|
|
167
|
+
// when SessionManager.buildSessionMcpFlags resolved one. Empty/absent ⇒ no flags
|
|
168
|
+
// ⇒ full project .mcp.json (the dark default). The caller already fail-safed to
|
|
169
|
+
// [] on any error, so a bad resolution can never strand the launch here.
|
|
170
|
+
if (Array.isArray(options.mcpFlags) && options.mcpFlags.length > 0) {
|
|
171
|
+
argv.push(...options.mcpFlags);
|
|
172
|
+
}
|
|
166
173
|
return { argv, envOverrides };
|
|
167
174
|
};
|
|
168
175
|
const codexCliBuilder = (options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkSessionLaunch.js","sourceRoot":"","sources":["../../src/core/frameworkSessionLaunch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frameworkSessionLaunch.js","sourceRoot":"","sources":["../../src/core/frameworkSessionLaunch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcpPidCapture — pure helper for the dynamic-MCP offload's capture-then-reap
|
|
3
|
+
* (DYNAMIC-MCP-LIFECYCLE-SPEC, fold C1). Given the live MCP process list + the
|
|
4
|
+
* process tree + the tmux pane map, it returns the heavy MCP child PIDs that
|
|
5
|
+
* belong to a specific session AND a specific `.mcp.json` server — the orphans the
|
|
6
|
+
* driver must reap after an offload restart (killing a session does NOT cascade to
|
|
7
|
+
* its MCP children; they reparent to launchd and survive).
|
|
8
|
+
*
|
|
9
|
+
* Pure + conservative: an unknown / non-heavy server, or a proc whose owning
|
|
10
|
+
* session can't be resolved to the target, contributes NO pid. The worst case is
|
|
11
|
+
* "capture nothing" (a missed reclaim the generic reaper still backstops), never
|
|
12
|
+
* "kill the wrong pid".
|
|
13
|
+
*/
|
|
14
|
+
import { type McpProcessInfo } from '../monitoring/McpProcessReaper.js';
|
|
15
|
+
import type { McpProcessSignature } from '../monitoring/mcpProcessSignatures.js';
|
|
16
|
+
/**
|
|
17
|
+
* Map a `.mcp.json` server NAME (what a load/offload request names) to the MCP
|
|
18
|
+
* process SIGNATURE id (what the process scan matches). Conservative: an unmapped
|
|
19
|
+
* server resolves to no signature ⇒ no pids captured. Extend as heavy servers are
|
|
20
|
+
* added (e.g. an Electron bridge) alongside HEAVY_MCP_SIGNATURE_IDS.
|
|
21
|
+
*/
|
|
22
|
+
export declare const MCP_SERVER_NAME_TO_SIGNATURE: Readonly<Record<string, McpProcessSignature['id']>>;
|
|
23
|
+
export interface CaptureHeavyPidsInput {
|
|
24
|
+
/** The owning tmux session name the offload is restarting. */
|
|
25
|
+
sessionName: string;
|
|
26
|
+
/** The `.mcp.json` server name being offloaded. */
|
|
27
|
+
server: string;
|
|
28
|
+
/** The live MCP process scan. */
|
|
29
|
+
procs: McpProcessInfo[];
|
|
30
|
+
/** pid → ppid map (ancestor resolution). */
|
|
31
|
+
tree: Map<number, number>;
|
|
32
|
+
/** tmux pane pid → session name. */
|
|
33
|
+
paneMap: Map<number, string>;
|
|
34
|
+
/** Max ppid hops when resolving a proc's owning session. */
|
|
35
|
+
maxHops: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The heavy MCP child PIDs for (sessionName, server) — the offload-orphan capture.
|
|
39
|
+
* Returns [] when: the server has no known heavy signature, or no matching proc
|
|
40
|
+
* resolves to the target session.
|
|
41
|
+
*/
|
|
42
|
+
export declare function captureHeavyMcpPidsForSession(input: CaptureHeavyPidsInput): number[];
|
|
43
|
+
//# sourceMappingURL=mcpPidCapture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpPidCapture.d.ts","sourceRoot":"","sources":["../../src/core/mcpPidCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAE5F,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4CAA4C;IAC5C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,oCAAoC;IACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAWpF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcpPidCapture — pure helper for the dynamic-MCP offload's capture-then-reap
|
|
3
|
+
* (DYNAMIC-MCP-LIFECYCLE-SPEC, fold C1). Given the live MCP process list + the
|
|
4
|
+
* process tree + the tmux pane map, it returns the heavy MCP child PIDs that
|
|
5
|
+
* belong to a specific session AND a specific `.mcp.json` server — the orphans the
|
|
6
|
+
* driver must reap after an offload restart (killing a session does NOT cascade to
|
|
7
|
+
* its MCP children; they reparent to launchd and survive).
|
|
8
|
+
*
|
|
9
|
+
* Pure + conservative: an unknown / non-heavy server, or a proc whose owning
|
|
10
|
+
* session can't be resolved to the target, contributes NO pid. The worst case is
|
|
11
|
+
* "capture nothing" (a missed reclaim the generic reaper still backstops), never
|
|
12
|
+
* "kill the wrong pid".
|
|
13
|
+
*/
|
|
14
|
+
import { resolveOwningSession } from '../monitoring/McpProcessReaper.js';
|
|
15
|
+
import { isHeavyMcpSignature } from '../monitoring/mcpIdleLiveOffload.js';
|
|
16
|
+
/**
|
|
17
|
+
* Map a `.mcp.json` server NAME (what a load/offload request names) to the MCP
|
|
18
|
+
* process SIGNATURE id (what the process scan matches). Conservative: an unmapped
|
|
19
|
+
* server resolves to no signature ⇒ no pids captured. Extend as heavy servers are
|
|
20
|
+
* added (e.g. an Electron bridge) alongside HEAVY_MCP_SIGNATURE_IDS.
|
|
21
|
+
*/
|
|
22
|
+
export const MCP_SERVER_NAME_TO_SIGNATURE = {
|
|
23
|
+
playwright: 'playwright-mcp',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The heavy MCP child PIDs for (sessionName, server) — the offload-orphan capture.
|
|
27
|
+
* Returns [] when: the server has no known heavy signature, or no matching proc
|
|
28
|
+
* resolves to the target session.
|
|
29
|
+
*/
|
|
30
|
+
export function captureHeavyMcpPidsForSession(input) {
|
|
31
|
+
const sig = MCP_SERVER_NAME_TO_SIGNATURE[input.server];
|
|
32
|
+
if (!sig || !isHeavyMcpSignature(sig))
|
|
33
|
+
return []; // unknown / not-heavy ⇒ nothing to capture
|
|
34
|
+
const pids = [];
|
|
35
|
+
for (const p of input.procs) {
|
|
36
|
+
if (p.signatureId !== sig)
|
|
37
|
+
continue;
|
|
38
|
+
if (resolveOwningSession(p.pid, input.tree, input.paneMap, input.maxHops) === input.sessionName) {
|
|
39
|
+
pids.push(p.pid);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return pids;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=mcpPidCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpPidCapture.js","sourceRoot":"","sources":["../../src/core/mcpPidCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAuB,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG1E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAwD;IAC/F,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAiBF;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAA4B;IACxE,MAAM,GAAG,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,2CAA2C;IAC7F,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,WAAW,KAAK,GAAG;YAAE,SAAS;QACpC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -248,6 +248,16 @@ export interface SessionManagerConfig {
|
|
|
248
248
|
* field existed, spawnInteractiveSession hardcoded 'claude-code',
|
|
249
249
|
* so messaging a Codex-only agent spawned a Claude session. */
|
|
250
250
|
framework?: 'claude-code' | 'codex-cli' | 'gemini-cli' | 'pi-cli';
|
|
251
|
+
/**
|
|
252
|
+
* Dynamic MCP Lifecycle (DYNAMIC-MCP-LIFECYCLE-SPEC). When enabled, a
|
|
253
|
+
* claude-code interactive session launches with a lean MCP subset
|
|
254
|
+
* (`keepWarm`) instead of the full `.mcp.json`, and heavy servers load on
|
|
255
|
+
* demand / offload when idle. ABSENT by default ⇒ full `.mcp.json` (today's
|
|
256
|
+
* behavior). TYPE-ONLY and intentionally NOT in ConfigDefaults (a default here
|
|
257
|
+
* would inject the block into every existing config and break the
|
|
258
|
+
* absent-equals-unchanged guarantee). Consumed only by the claude-code spawn
|
|
259
|
+
* path; other frameworks ignore it. */
|
|
260
|
+
dynamicMcp?: import('./dynamicMcpConfig.js').DynamicMcpConfig;
|
|
251
261
|
/** Project directory (where CLAUDE.md lives) */
|
|
252
262
|
projectDir: string;
|
|
253
263
|
/** Maximum concurrent sessions */
|
|
@@ -4397,6 +4407,23 @@ export interface MonitoringConfig {
|
|
|
4397
4407
|
/** Retain CPU/mem samples for this many days; older rows pruned (default: 7). */
|
|
4398
4408
|
retentionDays?: number;
|
|
4399
4409
|
};
|
|
4410
|
+
/**
|
|
4411
|
+
* ProcessFootprintMonitor — observe-only per-machine process-count measurement
|
|
4412
|
+
* (the climb signal missing before the 2026-06-26 resource-exhaustion panic).
|
|
4413
|
+
* `enabled` undefined resolves via the developmentAgent gate (live on echo, dark
|
|
4414
|
+
* on the fleet); `false` → null + `/resources/footprint` 503s. Never gates.
|
|
4415
|
+
*/
|
|
4416
|
+
processFootprintMonitor?: {
|
|
4417
|
+
enabled?: boolean;
|
|
4418
|
+
/** Sampling cadence (ms) (default: 5min). */
|
|
4419
|
+
sampleIntervalMs?: number;
|
|
4420
|
+
/** Rolling-window size for the trend (default: 288 = 24h at 5-min cadence). */
|
|
4421
|
+
windowSamples?: number;
|
|
4422
|
+
/** Process count at/over which the (opt-in) heads-up fires (default: 220; 0 disables). */
|
|
4423
|
+
alertThreshold?: number;
|
|
4424
|
+
/** Opt-in heads-up — measure first (default: false). */
|
|
4425
|
+
alertEnabled?: boolean;
|
|
4426
|
+
};
|
|
4400
4427
|
/**
|
|
4401
4428
|
* ActiveWorkSilenceSentinel — topic-independent watchdog: a session that was
|
|
4402
4429
|
* actively producing output goes silent for N minutes. Covers the gap left
|