@skillstate/mcp 2.1.0 → 2.2.1

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/@skillstate/mcp)](https://www.npmjs.com/package/@skillstate/mcp)
8
8
  [![node](https://img.shields.io/node/v/@skillstate/mcp)](https://www.npmjs.com/package/@skillstate/mcp)
9
- [![Tests](https://img.shields.io/badge/tests-873%20passing-brightgreen)](https://github.com/vitkuz573/skillstate)
9
+ [![Tests](https://img.shields.io/badge/tests-1165%20passing-brightgreen)](https://github.com/vitkuz573/skillstate)
10
10
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/vitkuz573/skillstate/blob/main/LICENSE)
11
11
 
12
12
  </div>
@@ -96,7 +96,7 @@ opencode debug config # mcp.skillstate appears in the resolved config
96
96
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2026-07-28","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}
97
97
  {"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
98
98
  | node packages/mcp/bin/mcp.js
99
- # -> protocolVersion "2026-07-28" + 10 tools
99
+ # -> protocolVersion "2026-07-28" + 14 tools
100
100
  ```
101
101
 
102
102
  ## API / Exports
@@ -111,7 +111,7 @@ Root path `@skillstate/mcp` exports `McpAdapter`, `McpServer`, `launch`, and
111
111
  `.launcherPath`, `.env`). No state path is embedded — the server resolves
112
112
  the state from its own cwd.
113
113
  - `saveMcpConfig(target, options?): Promise<string>` — atomic write.
114
- - `new McpServer(options: McpServerOptions)` — `{ spec, root, name, tracker? }`.
114
+ - `new McpServer(options: McpServerOptions)` — `{ spec, root, name, agent?, tracker? }`.
115
115
  - `protocolVersion` is always `'2026-07-28'`; `initialize` answers exactly
116
116
  that regardless of what the client requested (per the MCP spec the client
117
117
  decides whether it can work with the server's revision).
@@ -128,11 +128,63 @@ Root path `@skillstate/mcp` exports `McpAdapter`, `McpServer`, `launch`, and
128
128
  (dry-run), `state.diff` (changes since the last call, `{ full: true }` for
129
129
  before/after), `state.checkpoint` (named sidecar snapshot),
130
130
  `state.rollback` (restore from a checkpoint), `state.summary` (compact
131
- orientation + session info), `state.metrics`, `spec.get` (with a ready-made
132
- valid `example_state_patch`), and `spec.next` (goal/next/blockers guidance).
131
+ orientation + session info), `state.metrics`, `state.finalize` (the agent's
132
+ "I am done" lifecycle marker), `spec.get` (with a ready-made
133
+ valid `example_state_patch`), `spec.next` (goal/next/blockers guidance),
134
+ plus the AGENT tools `agent.list` / `agent.read` / `agent.merge`.
133
135
  `state.merge` and `state.reset` are gone — `state.patch` validates, and
134
136
  rollback replaces reset.
135
137
 
138
+ **Multi-agent (2.2.0).** Every state tool accepts `{ agent }` (sanitized
139
+ `[A-Za-z0-9_-]`, ≤ 64) scoping the file to
140
+ `<stateDir>/agents/<agentId>/<name>`; the server default comes from the
141
+ `SKILLSTATE_AGENT_ID` env (`launch`) or the `McpServerOptions.agent`
142
+ constructor option; the default `''` is the main agent. All writes
143
+ (`state.patch`, `state.rollback`, `state.checkpoint`, `agent.merge`) run
144
+ under `withStateLock` — a cross-process lockfile at `<state>.lock` with
145
+ stale-TTL takeover — so 2-3 concurrent agent processes never interleave
146
+ state writes. The `state.diff` baseline is persisted to
147
+ `<stateDir>/.diff-baseline.json` (atomic, under the lock) — the
148
+ "since your last look" semantics is now consistent across processes.
149
+ The agent tools: `agent.list` scans `<stateDir>/agents/` and returns
150
+ `{ agents: [{ id, statePath, exists, status, lastActivityAt, staleness,
151
+ ageMs, summary, lastModified }] }` (light summary: keys + size, no values);
152
+ `agent.read` returns a sub-agent's state read-only; `agent.merge` folds a
153
+ sub-agent copy into the main state under the lock — keys only in the sub
154
+ state are taken, nested objects merge recursively, conflicting scalars
155
+ follow `keep: 'main'` (default) or `'sub'` (schema defaults count as
156
+ "never set"), and the sub copy is NOT deleted — it is marked `mergedAt`
157
+ (history) and its session sidecar flips to `status: 'merged'`.
158
+
159
+ **Session lifecycle (2.3.0).** The state envelope belongs to the
160
+ procedure; the session lifecycle lives in a separate sidecar next to
161
+ every state file — `<stateDir>/.session-meta.json` (agent scopes:
162
+ `agents/<id>/.session-meta.json`), written atomically under its own
163
+ `withStateLock`:
164
+
165
+ - `launch()` stamps `{ status: 'running', startedAt, agentId,
166
+ protocolVersion }` — a new launch overwrites any previous
167
+ `interrupted`/`completed` marker (a fresh run has begun).
168
+ - Every state write (`state.patch` / `state.rollback` /
169
+ `state.checkpoint` / `agent.merge`) refreshes `lastActivityAt`,
170
+ debounced to at most one sidecar write per 5 s; a broken sidecar never
171
+ fails a state write.
172
+ - `state.finalize { status: 'completed' | 'failed', result? }` is the
173
+ agent's own "I am done" signal — it writes `{ status, finishedAt,
174
+ result }` so `agent.list`/`state.summary` show a finished session
175
+ instead of a running/interrupted one.
176
+ - SIGINT/SIGTERM flush `status: 'interrupted'` + re-pin the diff baseline
177
+ to the surviving state, then exit 130 (`installShutdown` from
178
+ `@skillstate/core`; terminal statuses recorded by the agent are never
179
+ clobbered). Embedders that own the process pass
180
+ `installInterruptHandler: false`.
181
+ - Staleness (`STALE_MS` = 5 min in `@skillstate/core`):
182
+ `active` — fresh running session or a terminal status; `stale` —
183
+ `running` with no writes for 5 min (the provider died without a
184
+ signal); `orphan` — no (or corrupt) sidecar. `agent.list` adds `ageMs`
185
+ for running sessions; `state.summary` adds `status`/`lastActivityAt`/
186
+ `staleness` to its `session` object.
187
+
136
188
  **Resources (`resources/read`):** `skillstate://state` (the full
137
189
  `{ version, state }` envelope), `skillstate://spec`, and
138
190
  `skillstate://summary` (compact projection). State is redacted on every read,
@@ -30,6 +30,13 @@ export interface McpServerOptions {
30
30
  root: string;
31
31
  /** State file name (confined by `resolveStatePath`). */
32
32
  name: string;
33
+ /**
34
+ * Default agent scope: `''` (the main agent) targets the plain state
35
+ * file; a non-empty id (sanitized `[A-Za-z0-9_-]`, ≤64) targets
36
+ * `agents/<id>/skillstate.json` inside the same bucket. Every tool call
37
+ * may still override the scope via `{ agent }` (and/or `{ root, name }`).
38
+ */
39
+ agent?: string;
33
40
  /** Optional token tracker for the `state.metrics` tool. */
34
41
  tracker?: TokenTracker;
35
42
  }
@@ -41,9 +48,19 @@ export interface LaunchArgs {
41
48
  root?: string;
42
49
  /** State file name override; defaults to the per-project state file name. */
43
50
  name?: string;
51
+ /** Default agent scope; falls back to the `SKILLSTATE_AGENT_ID` env. */
52
+ agent?: string;
44
53
  tracker?: TokenTracker;
45
54
  input?: Readable;
46
55
  output?: Writable;
56
+ /**
57
+ * Wire the SIGINT/SIGTERM interrupt handler that flushes
58
+ * `{ status: 'interrupted' }` + the diff baseline before exiting
59
+ * (default `true`). In-process embedders that own the process and
60
+ * manage their own teardown pass `false` — the handler exits the
61
+ * PROCESS, which is wrong for embedded servers.
62
+ */
63
+ installInterruptHandler?: boolean;
47
64
  }
48
65
  /**
49
66
  * The `skillstate` MCP server: a JSON-RPC 2.0 over stdio server exposing
@@ -74,13 +91,49 @@ export declare class McpServer {
74
91
  /** Serializes `start()` stream handling so chunk order is preserved. */
75
92
  private chain;
76
93
  /**
77
- * Diff baselines per resolved state path: the state as of the last
78
- * `state.diff` call (or, before the first look, as of the first write).
94
+ * Diff baselines are persisted to disk (`.diff-baseline.json` next to
95
+ * each state file, under the cross-process lock) — the "since your last
96
+ * look" semantics stays, but is now CONSISTENT BETWEEN PROCESSES: the
97
+ * former in-memory per-server Map made two servers diff against
98
+ * different baselines.
79
99
  */
80
- private readonly prevStates;
81
100
  /** Writes (patch/rollback) applied per resolved state path this session. */
82
101
  private readonly writeSeq;
102
+ /** Debounce clock for `.session-meta.json` activity stamps (per meta path). */
103
+ private readonly lastActivityWrite;
104
+ /** Uninstall closure for the SIGINT/SIGTERM interrupt handler (if wired). */
105
+ private uninstallShutdown;
106
+ /** The `{ source, handler }` pair attached by `start()` (removed by `stop()`). */
107
+ private attached;
83
108
  constructor(options: McpServerOptions);
109
+ /**
110
+ * The state DIRECTORY the server session owns (its sidecars —
111
+ * `.session-meta.json`, the diff baseline — live next to the default
112
+ * state file; agent-scoped calls keep their per-agent directories).
113
+ */
114
+ private get sessionDir();
115
+ /**
116
+ * Stamp the session sidecar for `dir` with `lastActivityAt: now`,
117
+ * debounced to one write per {@link ACTIVITY_DEBOUNCE_MS} per directory
118
+ * (state writes stay the hot path). The meta sidecar is best-effort
119
+ * orchestration metadata: a failed write is swallowed — a broken
120
+ * sidecar never fails a state write. The write itself runs under the
121
+ * meta file's own `withStateLock` (never the state lock — no deadlock).
122
+ */
123
+ private touchActivity;
124
+ /**
125
+ * Wire the @non-paper shutdown seam: SIGINT/SIGTERM best-effort flush
126
+ * the session sidecar to `status: "interrupted"` + re-pin the diff
127
+ * baseline to the surviving state (the next process starts diffing from
128
+ * the post-crash state, not from a pre-crash baseline), then exit with
129
+ * the conventional 130. Terminal statuses (`completed` / `failed` /
130
+ * `merged`) recorded by the agent itself are never clobbered — hosts
131
+ * SIGTERM their servers after a clean finalize too. Idempotent; returns
132
+ * an uninstall closure for embedders/tests.
133
+ */
134
+ installInterruptHandler(): () => void;
135
+ /** Detach the SIGINT/SIGTERM handler (embedders/tests owning the process). */
136
+ detachInterruptHandler(): void;
84
137
  /**
85
138
  * Process a single (already-framed) JSON-RPC message line and return the
86
139
  * response string, or `null` when the message needs no reply (a
@@ -100,7 +153,10 @@ export declare class McpServer {
100
153
  * processed strictly in arrival order even though handling is async.
101
154
  */
102
155
  start(input?: Readable, output?: Writable): Promise<McpServer>;
103
- /** Mark the server stopped (idempotent). */
156
+ /**
157
+ * Mark the server stopped (idempotent): detaches the input listener
158
+ * attached by `start()` so embedded servers release their streams.
159
+ */
104
160
  stop(): void;
105
161
  /** Whether the server is currently reading from its input stream. */
106
162
  get isRunning(): boolean;
@@ -121,12 +177,56 @@ export declare class McpServer {
121
177
  private stateRollback;
122
178
  private stateSummary;
123
179
  private stateMetrics;
180
+ /**
181
+ * `state.finalize` — the agent's own "I am done" signal. Writes the
182
+ * session sidecar `{ status, finishedAt, result }` under the meta lock
183
+ * and returns the recorded lifecycle so the orchestrator (or a later
184
+ * `agent.read`/`agent.list`) sees it. `result` is an optional free-text
185
+ * outcome; invalid statuses are rejected before anything is written.
186
+ */
187
+ private stateFinalize;
124
188
  private specGet;
125
189
  private specNext;
126
190
  /** Resolve the target state file path (args override the defaults). */
127
191
  private resolveStore;
128
- /** Resolve `{ root, name }` + the confined file path in one go. */
192
+ /**
193
+ * The effective agent scope for a call: `{ agent }` wins, then the
194
+ * server default ({@link McpServerOptions.agent} — set from the
195
+ * `SKILLSTATE_AGENT_ID` env by {@link launch}). `''` = main agent.
196
+ */
197
+ private effectiveAgent;
198
+ /** Resolve `{ root, name, agent }` + the confined file path in one go. */
129
199
  private resolveRef;
200
+ /** Required + sanitized `{ agent }` for the agent.* tools. */
201
+ private requireAgent;
202
+ /** State file path for a REQUIRED sub-agent id (read-only views). */
203
+ private agentStore;
204
+ /**
205
+ * `agent.list`: scan `<root>/agents/` and project each sub-agent state
206
+ * copy — id, statePath, exists, lastModified, lifecycle (status,
207
+ * lastActivityAt, staleness, ageMs) and a LIGHT summary (top-level keys
208
+ * + size only, no values). Non-directory entries and ids outside
209
+ * `[A-Za-z0-9_-]{1,64}` are skipped; a missing agents directory yields
210
+ * an empty list. The lifecycle comes from the agent dir's
211
+ * `.session-meta.json` sidecar: `orphan` when it is missing/corrupt,
212
+ * `stale` when a `running` session has not written anything for the
213
+ * core `STALE_MS` threshold (5 min — the provider died without a
214
+ * signal), `active` otherwise. A `running` agent reports its `ageMs`
215
+ * since the last
216
+ * activity so the main agent can tell "finished" from "died mid-run"
217
+ * at a glance.
218
+ */
219
+ private agentList;
220
+ /** `agent.read`: a sub-agent's state, READ-ONLY (the main agent peeks). */
221
+ private agentRead;
222
+ /**
223
+ * `agent.merge`: fold a sub-agent's state into the MAIN state under the
224
+ * cross-process lock (conflicting scalars resolved by `keep: 'main'` —
225
+ * the default — or `'sub'`; nested objects recurse; `null` deletes).
226
+ * The sub state is NOT deleted (history): it is marked with `mergedAt`.
227
+ * Returns `{ agent, keep, state, changes }`.
228
+ */
229
+ private agentMerge;
130
230
  /** Read + normalize the state, falling back to schema defaults. */
131
231
  private loadState;
132
232
  /** Advance the per-path session write counter. */
@@ -136,6 +236,17 @@ export declare class McpServer {
136
236
  * `{ version, state }`: temp sibling + fsync + rename.
137
237
  */
138
238
  private writeState;
239
+ /**
240
+ * The DIFF BASELINE for a state file, persisted at
241
+ * `<stateDir>/.diff-baseline.json` (stateDir = the state file's
242
+ * directory — per state file, since agent scopes live in their own
243
+ * `agents/<id>/` directories). `null` = no baseline yet.
244
+ */
245
+ private readBaseline;
246
+ /** Crash-safe synchronous write of the diff baseline (atomic rename). */
247
+ private writeBaseline;
248
+ /** `.diff-baseline.json` lives next to its state file. */
249
+ private baselinePathFor;
139
250
  private toolsList;
140
251
  private resourcesList;
141
252
  private successResponse;
@@ -159,10 +270,25 @@ export { resolveHostStateForCwd as resolveStatePathForCwd } from '@skillstate/co
159
270
  * `SKILLSTATE_SPEC_PATH` when not passed explicitly). State resolution is
160
271
  * ALWAYS per-project from the server's `process.cwd()`:
161
272
  * `<cwd>/.skillstate/skillstate.json` (the global bucket when cwd === home).
162
- * Hosts that launch local MCP servers with the project as cwd therefore get
163
- * per-project state without any baked path. Explicit `args.root`/`args.name`
164
- * remain available for in-process embedding. Defaults to the canonical
165
- * InterCode CTF spec.
273
+ * AGENT SCOPE: a non-empty `SKILLSTATE_AGENT_ID` env (or `args.agent`)
274
+ * scopes the default state file to `agents/<id>/skillstate.json` — host
275
+ * configs set the env per server instance when a sub-agent needs an
276
+ * isolated copy; the default is `''` (the main agent) and every tool call
277
+ * can still override via `{ agent }`. Hosts that launch local MCP servers
278
+ * with the project as cwd therefore get per-project state without any
279
+ * baked path. Explicit `args.root`/`args.name` remain available for
280
+ * in-process embedding. Defaults to the canonical InterCode CTF spec.
281
+ *
282
+ * SESSION LIFECYCLE (release 2.3.0): launch stamps the session sidecar
283
+ * `<stateDir>/.session-meta.json` with `{ status: 'running', startedAt,
284
+ * agentId, protocolVersion }` — overwriting any previous
285
+ * `interrupted`/`completed` marker (a new launch means a fresh run) — and
286
+ * wires the SIGINT/SIGTERM handler that flushes
287
+ * `{ status: 'interrupted' }` + the diff baseline before exiting. The
288
+ * agent is expected to call `state.finalize` at the end of its procedure.
289
+ * In-process embedders that do not own the process can pass
290
+ * `installInterruptHandler: false` (tests) or call
291
+ * `server.detachInterruptHandler()` afterwards.
166
292
  */
167
293
  export declare function launch(args?: LaunchArgs): Promise<McpServer>;
168
294
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsBtD,OAAO,KAAK,EACV,cAAc,EAKd,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAc7C,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,IAAI,EAAE,cAAc,CAAC;IACrB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAkMD;;;GAGG;AACH,qBAAa,SAAS;IAoCR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAnCpC,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,gBAAoB;IAC5C,sCAAsC;IACtC,QAAQ,CAAC,YAAY;QACnB,KAAK;YAAI,WAAW;;QACpB,SAAS;QACT,OAAO;QACP,OAAO;YAAI,WAAW;;MACtB;IACF,kCAAkC;IAClC,QAAQ,CAAC,UAAU;QAAK,IAAI;QAAgB,OAAO;MAAY;IAE/D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,wEAAwE;IACxE,OAAO,CAAC,KAAK,CAAoC;IACjD;;;;;;OAMG;IACH,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,6EAA6E;IAC7E,OAAO,CAAC,iBAAiB,CAA6B;IACtD,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAGA;IAEhB,YAA6B,OAAO,EAAE,gBAAgB,EAQrD;IAED;;;;OAIG;IACH,OAAO,KAAK,UAAU,GAErB;IAED;;;;;;;OAOG;YACW,aAAa;IAc3B;;;;;;;;;OASG;IACH,uBAAuB,IAAI,MAAM,IAAI,CAkCpC;IAED,8EAA8E;IAC9E,sBAAsB,IAAI,IAAI,CAG7B;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM/C;IAED;;;;OAIG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB3C;IAED;;;;OAIG;IACG,KAAK,CACT,KAAK,CAAC,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,QAAQ,GAChB,OAAO,CAAC,SAAS,CAAC,CAWpB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,CAIX;IAED,qEAAqE;IACrE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAMD,uDAAuD;YACzC,IAAI;IASlB,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;YA6BR,aAAa;YA+Bb,cAAc;IAwB5B,OAAO,CAAC,kBAAkB;YAmDZ,QAAQ;IAsCtB,OAAO,CAAC,QAAQ;YAKF,UAAU;IA0CxB,OAAO,CAAC,aAAa;YAoBP,SAAS;YAkBT,eAAe;YAiCf,aAAa;IAyC3B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,YAAY;IAWpB;;;;;;OAMG;YACW,aAAa;IAyB3B,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,QAAQ;IAoBhB,uEAAuE;IACvE,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAatB,0EAA0E;IAC1E,OAAO,CAAC,UAAU;IAgBlB,8DAA8D;IAC9D,OAAO,CAAC,YAAY;IAYpB,qEAAqE;IACrE,OAAO,CAAC,UAAU;IAMlB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS;IA8CjB,2EAA2E;IAC3E,OAAO,CAAC,SAAS;IASjB;;;;;;OAMG;YACW,UAAU;IA4CxB,mEAAmE;IACnE,OAAO,CAAC,SAAS;IASjB,kDAAkD;IAClD,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAiBlB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAWpB,yEAAyE;IACzE,OAAO,CAAC,aAAa;IAerB,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,SAAS;IAkKjB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,UAAU;CAGnB;AA+ED;;;;;;;;;;GAUG;AACH,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAuClE"}
@@ -26,7 +26,8 @@
26
26
  import * as fs from 'node:fs';
27
27
  import * as os from 'node:os';
28
28
  import * as path from 'node:path';
29
- import { FileStore, atomicWriteFile, createInitialState, mergeState, migrate, redactSecrets, resolveHostStateForCwd, resolveStatePath, validatePatchDeep, CURRENT_STATE_VERSION, } from '@skillstate/core';
29
+ import { FileStore, atomicWriteFile, createInitialState, mergeState, migrate, readSessionMeta, redactSecrets, resolveHostStateForCwd, resolveStatePath, sanitizeAgentId, sessionStaleness, validatePatchDeep, withStateLock, writeSessionMeta, CURRENT_STATE_VERSION, SESSION_META_FILE, } from '@skillstate/core';
30
+ import { installShutdown } from '@skillstate/core';
30
31
  import { INTERCODE_CTF_SPEC } from '@skillstate/core/schemas';
31
32
  /** The single MCP protocol revision this server speaks (initialize answer). */
32
33
  export const PROTOCOL_VERSION = '2026-07-28';
@@ -34,6 +35,11 @@ export const PROTOCOL_VERSION = '2026-07-28';
34
35
  const SUMMARY_NOTES_MAX_CHARS = 200;
35
36
  /** How many `next_steps` entries the summary/spec.next projections keep. */
36
37
  const SUMMARY_NEXT_PREVIEW = 3;
38
+ /**
39
+ * Session-activity debounce: the `.session-meta.json` `lastActivityAt`
40
+ * stamp is rewritten at most once per 5s of state writes.
41
+ */
42
+ const ACTIVITY_DEBOUNCE_MS = 5000;
37
43
  function isPlainObject(value) {
38
44
  return typeof value === 'object' && value !== null && !Array.isArray(value);
39
45
  }
@@ -77,6 +83,53 @@ function nestedMergeWarnings(before, patch) {
77
83
  }
78
84
  return warnings;
79
85
  }
86
+ /**
87
+ * AGENT-MERGE conflict resolution: build the effective sub-state patch
88
+ * against `main` under the `keep` policy. Schema defaults are the shared
89
+ * "unset" baseline: a sub value equal to its schema default means the sub
90
+ * agent never set the key (skip), a main value equal to its default means
91
+ * the main agent never set it (no real conflict — the sub value wins).
92
+ * Everything else: keys only in `sub` are taken, identical keys are
93
+ * skipped, nested plain objects recurse, and remaining scalar conflicts
94
+ * go to the `keep` winner. Deletions stay local to the sub copy — the
95
+ * merge carries set/updated keys only.
96
+ */
97
+ function resolveAgentMergeConflicts(main, sub, keep, defaults) {
98
+ const patch = {};
99
+ for (const [key, subValue] of Object.entries(sub)) {
100
+ if (!Object.prototype.hasOwnProperty.call(main, key)) {
101
+ patch[key] = subValue;
102
+ continue;
103
+ }
104
+ const mainValue = main[key];
105
+ if (JSON.stringify(mainValue) === JSON.stringify(subValue)) {
106
+ continue;
107
+ }
108
+ if (isPlainObject(mainValue) && isPlainObject(subValue)) {
109
+ const nested = resolveAgentMergeConflicts(mainValue, subValue, keep, {});
110
+ if (Object.keys(nested).length > 0) {
111
+ patch[key] = nested;
112
+ }
113
+ continue;
114
+ }
115
+ const isDefault = (value) => Object.prototype.hasOwnProperty.call(defaults, key) &&
116
+ JSON.stringify(value) === JSON.stringify(defaults[key]);
117
+ if (isDefault(subValue)) {
118
+ continue;
119
+ }
120
+ if (isDefault(mainValue) || keep === 'sub') {
121
+ patch[key] = subValue;
122
+ }
123
+ }
124
+ return patch;
125
+ }
126
+ /** Light sub-agent summary: top-level keys + JSON size (no values). */
127
+ function agentSummary(state) {
128
+ return {
129
+ keys: Object.keys(state),
130
+ size_bytes: Buffer.byteLength(JSON.stringify(state), 'utf-8'),
131
+ };
132
+ }
80
133
  /**
81
134
  * Compact state projection shared by `state.summary` and
82
135
  * `skillstate://summary`. Recognizes the generic-procedure fields
@@ -181,14 +234,107 @@ export class McpServer {
181
234
  /** Serializes `start()` stream handling so chunk order is preserved. */
182
235
  chain = Promise.resolve();
183
236
  /**
184
- * Diff baselines per resolved state path: the state as of the last
185
- * `state.diff` call (or, before the first look, as of the first write).
237
+ * Diff baselines are persisted to disk (`.diff-baseline.json` next to
238
+ * each state file, under the cross-process lock) — the "since your last
239
+ * look" semantics stays, but is now CONSISTENT BETWEEN PROCESSES: the
240
+ * former in-memory per-server Map made two servers diff against
241
+ * different baselines.
186
242
  */
187
- prevStates = new Map();
188
243
  /** Writes (patch/rollback) applied per resolved state path this session. */
189
244
  writeSeq = new Map();
245
+ /** Debounce clock for `.session-meta.json` activity stamps (per meta path). */
246
+ lastActivityWrite = new Map();
247
+ /** Uninstall closure for the SIGINT/SIGTERM interrupt handler (if wired). */
248
+ uninstallShutdown = null;
249
+ /** The `{ source, handler }` pair attached by `start()` (removed by `stop()`). */
250
+ attached = null;
190
251
  constructor(options) {
191
252
  this.options = options;
253
+ if (options.agent !== undefined &&
254
+ options.agent.length > 0 &&
255
+ sanitizeAgentId(options.agent).length === 0) {
256
+ throw new Error(`Invalid agent id: ${options.agent}`);
257
+ }
258
+ }
259
+ /**
260
+ * The state DIRECTORY the server session owns (its sidecars —
261
+ * `.session-meta.json`, the diff baseline — live next to the default
262
+ * state file; agent-scoped calls keep their per-agent directories).
263
+ */
264
+ get sessionDir() {
265
+ return path.dirname(this.resolveRef({}).filePath);
266
+ }
267
+ /**
268
+ * Stamp the session sidecar for `dir` with `lastActivityAt: now`,
269
+ * debounced to one write per {@link ACTIVITY_DEBOUNCE_MS} per directory
270
+ * (state writes stay the hot path). The meta sidecar is best-effort
271
+ * orchestration metadata: a failed write is swallowed — a broken
272
+ * sidecar never fails a state write. The write itself runs under the
273
+ * meta file's own `withStateLock` (never the state lock — no deadlock).
274
+ */
275
+ async touchActivity(dir) {
276
+ const metaPath = path.join(dir, SESSION_META_FILE);
277
+ const now = Date.now();
278
+ if (now - (this.lastActivityWrite.get(metaPath) ?? 0) < ACTIVITY_DEBOUNCE_MS) {
279
+ return;
280
+ }
281
+ this.lastActivityWrite.set(metaPath, now);
282
+ try {
283
+ await writeSessionMeta(dir, { lastActivityAt: new Date(now).toISOString() });
284
+ }
285
+ catch {
286
+ // Best-effort activity stamp (e.g. the sidecar path is unwritable).
287
+ }
288
+ }
289
+ /**
290
+ * Wire the @non-paper shutdown seam: SIGINT/SIGTERM best-effort flush
291
+ * the session sidecar to `status: "interrupted"` + re-pin the diff
292
+ * baseline to the surviving state (the next process starts diffing from
293
+ * the post-crash state, not from a pre-crash baseline), then exit with
294
+ * the conventional 130. Terminal statuses (`completed` / `failed` /
295
+ * `merged`) recorded by the agent itself are never clobbered — hosts
296
+ * SIGTERM their servers after a clean finalize too. Idempotent; returns
297
+ * an uninstall closure for embedders/tests.
298
+ */
299
+ installInterruptHandler() {
300
+ if (this.uninstallShutdown !== null) {
301
+ return this.uninstallShutdown;
302
+ }
303
+ this.uninstallShutdown = installShutdown(async () => {
304
+ try {
305
+ const current = readSessionMeta(this.sessionDir);
306
+ if (current?.status !== 'completed' &&
307
+ current?.status !== 'failed' &&
308
+ current?.status !== 'merged') {
309
+ // Hosts SIGTERM their servers after a clean finalize too — never
310
+ // clobber a terminal status the agent recorded itself.
311
+ await writeSessionMeta(this.sessionDir, {
312
+ status: 'interrupted',
313
+ lastActivityAt: new Date().toISOString(),
314
+ });
315
+ }
316
+ }
317
+ catch {
318
+ // Meta flush is best-effort; the baseline flush below still runs.
319
+ }
320
+ try {
321
+ const ref = this.resolveRef({});
322
+ // Flush the baseline: the surviving state becomes the new "since
323
+ // your last look" point for the next process (never diff against
324
+ // a pre-crash baseline).
325
+ this.writeBaseline(ref.filePath, this.loadState(ref.filePath));
326
+ }
327
+ catch {
328
+ // Baseline flush is best-effort too — teardown must never crash.
329
+ }
330
+ process.exit(130);
331
+ });
332
+ return this.uninstallShutdown;
333
+ }
334
+ /** Detach the SIGINT/SIGTERM handler (embedders/tests owning the process). */
335
+ detachInterruptHandler() {
336
+ this.uninstallShutdown?.();
337
+ this.uninstallShutdown = null;
192
338
  }
193
339
  /**
194
340
  * Process a single (already-framed) JSON-RPC message line and return the
@@ -237,15 +383,22 @@ export class McpServer {
237
383
  const source = input ?? process.stdin;
238
384
  const sink = output ?? process.stdout;
239
385
  this.running = true;
240
- source.on('data', (chunk) => {
386
+ const handler = (chunk) => {
241
387
  const text = typeof chunk === 'string' ? chunk : chunk.toString();
242
388
  void this.pump(text, sink);
243
- });
389
+ };
390
+ source.on('data', handler);
391
+ this.attached = { source, handler };
244
392
  return this;
245
393
  }
246
- /** Mark the server stopped (idempotent). */
394
+ /**
395
+ * Mark the server stopped (idempotent): detaches the input listener
396
+ * attached by `start()` so embedded servers release their streams.
397
+ */
247
398
  stop() {
248
399
  this.running = false;
400
+ this.attached?.source.removeListener('data', this.attached.handler);
401
+ this.attached = null;
249
402
  }
250
403
  /** Whether the server is currently reading from its input stream. */
251
404
  get isRunning() {
@@ -400,10 +553,18 @@ export class McpServer {
400
553
  return this.stateSummary(args);
401
554
  case 'state.metrics':
402
555
  return this.stateMetrics();
556
+ case 'state.finalize':
557
+ return this.stateFinalize(args);
403
558
  case 'spec.get':
404
559
  return this.specGet();
405
560
  case 'spec.next':
406
561
  return this.specNext(args);
562
+ case 'agent.list':
563
+ return this.agentList();
564
+ case 'agent.read':
565
+ return this.agentRead(args);
566
+ case 'agent.merge':
567
+ return this.agentMerge(args);
407
568
  default:
408
569
  throw new Error(`Unknown tool: ${name}`);
409
570
  }
@@ -412,7 +573,7 @@ export class McpServer {
412
573
  const state = this.loadState(this.resolveStore(args));
413
574
  return this.textResult(redactSecrets(JSON.stringify(state)));
414
575
  }
415
- statePatch(args) {
576
+ async statePatch(args) {
416
577
  const patch = args['patch'];
417
578
  if (!isPlainObject(patch)) {
418
579
  throw new Error('patch must be an object');
@@ -430,13 +591,17 @@ export class McpServer {
430
591
  };
431
592
  }
432
593
  const filePath = this.resolveStore(args);
433
- const before = this.loadState(filePath);
434
- const after = mergeState(before, patch);
435
- this.writeState(filePath, after);
436
- this.bumpWriteSeq(filePath);
437
- if (!this.prevStates.has(filePath)) {
438
- this.prevStates.set(filePath, before);
439
- }
594
+ const { before, after } = await withStateLock(filePath, () => {
595
+ const before = this.loadState(filePath);
596
+ const after = mergeState(before, patch);
597
+ this.writeState(filePath, after);
598
+ this.bumpWriteSeq(filePath);
599
+ if (this.readBaseline(filePath) === null) {
600
+ this.writeBaseline(filePath, before);
601
+ }
602
+ return { before, after };
603
+ });
604
+ await this.touchActivity(path.dirname(filePath));
440
605
  const payload = {
441
606
  state: after,
442
607
  changes: topChanges(before, after),
@@ -454,14 +619,14 @@ export class McpServer {
454
619
  ? { valid: true }
455
620
  : { valid: false, error: validation.error, field: validation.field })));
456
621
  }
457
- stateDiff(args) {
622
+ async stateDiff(args) {
458
623
  const filePath = this.resolveStore(args);
459
- const current = this.loadState(filePath);
460
- let before = this.prevStates.get(filePath);
461
- if (before === undefined) {
462
- before = current;
463
- }
464
- this.prevStates.set(filePath, current);
624
+ const { before, current } = await withStateLock(filePath, () => {
625
+ const current = this.loadState(filePath);
626
+ const stored = this.readBaseline(filePath);
627
+ this.writeBaseline(filePath, current);
628
+ return { before: stored ?? current, current };
629
+ });
465
630
  const payload = {
466
631
  changes: topChanges(before, current),
467
632
  };
@@ -474,27 +639,30 @@ export class McpServer {
474
639
  async stateCheckpoint(args) {
475
640
  const ref = this.resolveRef(args);
476
641
  const dir = checkpointsDir(ref.filePath);
477
- const state = this.loadState(ref.filePath);
478
- const seq = nextCheckpointSeq(dir);
479
- const label = sanitizeLabel(typeof args['label'] === 'string' ? args['label'] : '');
480
- const checkpointId = `${seq}-${label}`;
481
- const record = {
482
- checkpointId,
483
- seq,
484
- label,
485
- createdAt: new Date().toISOString(),
486
- state,
487
- };
488
- // Best-effort `<path>.snapshot` side copy through the paper-exact store,
489
- // then the named sidecar entry (both atomic writes).
490
- await new FileStore(ref.root, ref.name).snapshot();
491
- await atomicWriteFile(path.join(dir, `${checkpointId}.json`), JSON.stringify(record, null, 2));
492
- const payload = {
493
- checkpointId,
494
- seq,
495
- label,
496
- checkpoints: listCheckpoints(dir),
497
- };
642
+ const payload = await withStateLock(ref.filePath, async () => {
643
+ const state = this.loadState(ref.filePath);
644
+ const seq = nextCheckpointSeq(dir);
645
+ const label = sanitizeLabel(typeof args['label'] === 'string' ? args['label'] : '');
646
+ const checkpointId = `${seq}-${label}`;
647
+ const record = {
648
+ checkpointId,
649
+ seq,
650
+ label,
651
+ createdAt: new Date().toISOString(),
652
+ state,
653
+ };
654
+ // Best-effort `<path>.snapshot` side copy through the paper-exact
655
+ // store, then the named sidecar entry (both atomic writes).
656
+ await new FileStore(ref.root, ref.name).snapshot();
657
+ await atomicWriteFile(path.join(dir, `${checkpointId}.json`), JSON.stringify(record, null, 2));
658
+ return {
659
+ checkpointId,
660
+ seq,
661
+ label,
662
+ checkpoints: listCheckpoints(dir),
663
+ };
664
+ });
665
+ await this.touchActivity(path.dirname(ref.filePath));
498
666
  return this.textResult(redactSecrets(JSON.stringify(payload)));
499
667
  }
500
668
  async stateRollback(args) {
@@ -525,18 +693,22 @@ export class McpServer {
525
693
  if (!isPlainObject(record.state)) {
526
694
  throw new Error(`Checkpoint is corrupted (no state): ${checkpointId}`);
527
695
  }
528
- const before = this.loadState(ref.filePath);
529
- this.writeState(ref.filePath, record.state);
530
- this.bumpWriteSeq(ref.filePath);
531
- if (!this.prevStates.has(ref.filePath)) {
532
- this.prevStates.set(ref.filePath, before);
533
- }
534
- const payload = { checkpointId, state: record.state };
696
+ const payload = await withStateLock(ref.filePath, () => {
697
+ const before = this.loadState(ref.filePath);
698
+ this.writeState(ref.filePath, record.state);
699
+ this.bumpWriteSeq(ref.filePath);
700
+ if (this.readBaseline(ref.filePath) === null) {
701
+ this.writeBaseline(ref.filePath, before);
702
+ }
703
+ return { checkpointId, state: record.state };
704
+ });
705
+ await this.touchActivity(path.dirname(ref.filePath));
535
706
  return this.textResult(redactSecrets(JSON.stringify(payload)));
536
707
  }
537
708
  stateSummary(args) {
538
709
  const filePath = this.resolveStore(args);
539
710
  const state = this.loadState(filePath);
711
+ const meta = readSessionMeta(path.dirname(filePath));
540
712
  const payload = {
541
713
  ...buildSummary(state),
542
714
  session: {
@@ -544,6 +716,9 @@ export class McpServer {
544
716
  envelopeVersion: CURRENT_STATE_VERSION,
545
717
  protocolVersion: this.protocolVersion,
546
718
  seq: this.writeSeq.get(filePath) ?? 0,
719
+ status: meta?.status ?? null,
720
+ lastActivityAt: meta?.lastActivityAt ?? null,
721
+ staleness: sessionStaleness(meta),
547
722
  },
548
723
  };
549
724
  return this.textResult(redactSecrets(JSON.stringify(payload)));
@@ -558,6 +733,35 @@ export class McpServer {
558
733
  }
559
734
  return this.textResult(redactSecrets(JSON.stringify(tracker.getMetrics())));
560
735
  }
736
+ /**
737
+ * `state.finalize` — the agent's own "I am done" signal. Writes the
738
+ * session sidecar `{ status, finishedAt, result }` under the meta lock
739
+ * and returns the recorded lifecycle so the orchestrator (or a later
740
+ * `agent.read`/`agent.list`) sees it. `result` is an optional free-text
741
+ * outcome; invalid statuses are rejected before anything is written.
742
+ */
743
+ async stateFinalize(args) {
744
+ const status = args['status'];
745
+ if (status !== 'completed' && status !== 'failed') {
746
+ throw new Error(`status must be "completed" or "failed", got: ${JSON.stringify(status)}`);
747
+ }
748
+ const result = typeof args['result'] === 'string' ? args['result'] : undefined;
749
+ const ref = this.resolveRef(args);
750
+ const meta = await writeSessionMeta(path.dirname(ref.filePath), {
751
+ status,
752
+ finishedAt: new Date().toISOString(),
753
+ ...(result === undefined ? {} : { result }),
754
+ });
755
+ const payload = {
756
+ status: meta.status,
757
+ finishedAt: meta.finishedAt,
758
+ sessionMetaPath: path.join(path.dirname(ref.filePath), SESSION_META_FILE),
759
+ };
760
+ if (result !== undefined) {
761
+ payload['result'] = result;
762
+ }
763
+ return this.textResult(redactSecrets(JSON.stringify(payload)));
764
+ }
561
765
  specGet() {
562
766
  const spec = this.options.spec;
563
767
  return this.textResult(redactSecrets(JSON.stringify({
@@ -590,11 +794,158 @@ export class McpServer {
590
794
  resolveStore(args) {
591
795
  return this.resolveRef(args).filePath;
592
796
  }
593
- /** Resolve `{ root, name }` + the confined file path in one go. */
797
+ /**
798
+ * The effective agent scope for a call: `{ agent }` wins, then the
799
+ * server default ({@link McpServerOptions.agent} — set from the
800
+ * `SKILLSTATE_AGENT_ID` env by {@link launch}). `''` = main agent.
801
+ */
802
+ effectiveAgent(args) {
803
+ const raw = typeof args['agent'] === 'string' && args['agent'].length > 0
804
+ ? args['agent']
805
+ : this.options.agent ?? '';
806
+ if (raw.length === 0)
807
+ return '';
808
+ const sanitized = sanitizeAgentId(raw);
809
+ if (sanitized.length === 0) {
810
+ throw new Error(`Invalid agent id: ${raw}`);
811
+ }
812
+ return sanitized;
813
+ }
814
+ /** Resolve `{ root, name, agent }` + the confined file path in one go. */
594
815
  resolveRef(args) {
595
816
  const root = typeof args['root'] === 'string' ? args['root'] : this.options.root;
596
817
  const name = typeof args['name'] === 'string' ? args['name'] : this.options.name;
597
- return { root, name, filePath: resolveStatePath(root, name) };
818
+ const agent = this.effectiveAgent(args);
819
+ const filePath = agent.length > 0
820
+ ? resolveStatePath(root, path.join('agents', agent, name))
821
+ : resolveStatePath(root, name);
822
+ return { root, name, agent, filePath };
823
+ }
824
+ /** Required + sanitized `{ agent }` for the agent.* tools. */
825
+ requireAgent(args) {
826
+ const raw = args['agent'];
827
+ if (typeof raw !== 'string' || raw.length === 0) {
828
+ throw new Error('agent is required: pass the sub-agent id from agent.list');
829
+ }
830
+ const sanitized = sanitizeAgentId(raw);
831
+ if (sanitized.length === 0) {
832
+ throw new Error(`Invalid agent id: ${raw}`);
833
+ }
834
+ return sanitized;
835
+ }
836
+ /** State file path for a REQUIRED sub-agent id (read-only views). */
837
+ agentStore(args) {
838
+ const root = typeof args['root'] === 'string' ? args['root'] : this.options.root;
839
+ const name = typeof args['name'] === 'string' ? args['name'] : this.options.name;
840
+ return resolveStatePath(root, path.join('agents', this.requireAgent(args), name));
841
+ }
842
+ /**
843
+ * `agent.list`: scan `<root>/agents/` and project each sub-agent state
844
+ * copy — id, statePath, exists, lastModified, lifecycle (status,
845
+ * lastActivityAt, staleness, ageMs) and a LIGHT summary (top-level keys
846
+ * + size only, no values). Non-directory entries and ids outside
847
+ * `[A-Za-z0-9_-]{1,64}` are skipped; a missing agents directory yields
848
+ * an empty list. The lifecycle comes from the agent dir's
849
+ * `.session-meta.json` sidecar: `orphan` when it is missing/corrupt,
850
+ * `stale` when a `running` session has not written anything for the
851
+ * core `STALE_MS` threshold (5 min — the provider died without a
852
+ * signal), `active` otherwise. A `running` agent reports its `ageMs`
853
+ * since the last
854
+ * activity so the main agent can tell "finished" from "died mid-run"
855
+ * at a glance.
856
+ */
857
+ agentList() {
858
+ const agentsDir = path.join(this.options.root, 'agents');
859
+ let entries;
860
+ try {
861
+ entries = fs.readdirSync(agentsDir, { withFileTypes: true });
862
+ }
863
+ catch {
864
+ entries = [];
865
+ }
866
+ const agents = [];
867
+ for (const entry of [...entries].sort((a, b) => a.name.localeCompare(b.name))) {
868
+ if (!entry.isDirectory() || !/^[A-Za-z0-9_-]{1,64}$/.test(entry.name)) {
869
+ continue;
870
+ }
871
+ const statePath = path.join(agentsDir, entry.name, this.options.name);
872
+ const meta = readSessionMeta(path.join(agentsDir, entry.name));
873
+ let exists = false;
874
+ let lastModified = null;
875
+ let summary;
876
+ try {
877
+ const stat = fs.statSync(statePath);
878
+ exists = true;
879
+ lastModified = new Date(stat.mtimeMs).toISOString();
880
+ summary = agentSummary(this.loadState(statePath));
881
+ }
882
+ catch {
883
+ // No state file for this agent yet — listed with exists: false.
884
+ }
885
+ const agent = {
886
+ id: entry.name,
887
+ statePath,
888
+ exists,
889
+ lastModified,
890
+ status: meta?.status ?? null,
891
+ lastActivityAt: meta?.lastActivityAt ?? null,
892
+ staleness: sessionStaleness(meta),
893
+ };
894
+ if (meta?.status === 'running' && typeof meta.lastActivityAt === 'string') {
895
+ agent['ageMs'] = Date.now() - Date.parse(meta.lastActivityAt);
896
+ }
897
+ if (summary !== undefined) {
898
+ agent['summary'] = summary;
899
+ }
900
+ agents.push(agent);
901
+ }
902
+ return this.textResult(redactSecrets(JSON.stringify({ agents })));
903
+ }
904
+ /** `agent.read`: a sub-agent's state, READ-ONLY (the main agent peeks). */
905
+ agentRead(args) {
906
+ const statePath = this.agentStore(args);
907
+ return this.textResult(redactSecrets(JSON.stringify({ agent: this.requireAgent(args), statePath, state: this.loadState(statePath) })));
908
+ }
909
+ /**
910
+ * `agent.merge`: fold a sub-agent's state into the MAIN state under the
911
+ * cross-process lock (conflicting scalars resolved by `keep: 'main'` —
912
+ * the default — or `'sub'`; nested objects recurse; `null` deletes).
913
+ * The sub state is NOT deleted (history): it is marked with `mergedAt`.
914
+ * Returns `{ agent, keep, state, changes }`.
915
+ */
916
+ async agentMerge(args) {
917
+ const agent = this.requireAgent(args);
918
+ const keep = args['keep'] === 'sub' ? 'sub' : 'main';
919
+ const ref = this.resolveRef({});
920
+ const subPath = resolveStatePath(ref.root, path.join('agents', agent, ref.name));
921
+ const { merged, changes } = await withStateLock(ref.filePath, () => {
922
+ const main = this.loadState(ref.filePath);
923
+ if (this.readBaseline(ref.filePath) === null) {
924
+ this.writeBaseline(ref.filePath, main);
925
+ }
926
+ const sub = this.loadState(subPath);
927
+ const after = mergeState(main, resolveAgentMergeConflicts(main, sub, keep, Object.fromEntries(Object.entries(this.options.spec.schema).map(([key, field]) => [key, field.default]))));
928
+ this.writeState(ref.filePath, after);
929
+ this.bumpWriteSeq(ref.filePath);
930
+ return { merged: after, changes: topChanges(main, after) };
931
+ });
932
+ await withStateLock(subPath, () => {
933
+ const sub = this.loadState(subPath);
934
+ sub['mergedAt'] = new Date().toISOString();
935
+ this.writeState(subPath, sub);
936
+ });
937
+ // Lifecycle: the sub-agent copy is folded — mark its sidecar `merged`
938
+ // (best-effort; the merge result above stays authoritative).
939
+ try {
940
+ await writeSessionMeta(path.dirname(subPath), {
941
+ status: 'merged',
942
+ mergedAt: new Date().toISOString(),
943
+ });
944
+ }
945
+ catch {
946
+ // A broken sidecar never fails a completed merge.
947
+ }
948
+ return this.textResult(redactSecrets(JSON.stringify({ agent, keep, state: merged, changes })));
598
949
  }
599
950
  /** Read + normalize the state, falling back to schema defaults. */
600
951
  loadState(filePath) {
@@ -628,6 +979,41 @@ export class McpServer {
628
979
  }
629
980
  fs.renameSync(tmp, filePath);
630
981
  }
982
+ /**
983
+ * The DIFF BASELINE for a state file, persisted at
984
+ * `<stateDir>/.diff-baseline.json` (stateDir = the state file's
985
+ * directory — per state file, since agent scopes live in their own
986
+ * `agents/<id>/` directories). `null` = no baseline yet.
987
+ */
988
+ readBaseline(filePath) {
989
+ try {
990
+ const parsed = JSON.parse(fs.readFileSync(this.baselinePathFor(filePath), 'utf-8'));
991
+ return isPlainObject(parsed) ? parsed : null;
992
+ }
993
+ catch {
994
+ return null;
995
+ }
996
+ }
997
+ /** Crash-safe synchronous write of the diff baseline (atomic rename). */
998
+ writeBaseline(filePath, state) {
999
+ const target = this.baselinePathFor(filePath);
1000
+ const dir = path.dirname(target);
1001
+ fs.mkdirSync(dir, { recursive: true });
1002
+ const tmp = `${target}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`;
1003
+ const fd = fs.openSync(tmp, 'w');
1004
+ try {
1005
+ fs.writeSync(fd, JSON.stringify(state, null, 2));
1006
+ fs.fsyncSync(fd);
1007
+ }
1008
+ finally {
1009
+ fs.closeSync(fd);
1010
+ }
1011
+ fs.renameSync(tmp, target);
1012
+ }
1013
+ /** `.diff-baseline.json` lives next to its state file. */
1014
+ baselinePathFor(filePath) {
1015
+ return path.join(path.dirname(filePath), '.diff-baseline.json');
1016
+ }
631
1017
  /* ------------------------------------------------------------------ */
632
1018
  /* Tool / resource schemas */
633
1019
  /* ------------------------------------------------------------------ */
@@ -635,6 +1021,10 @@ export class McpServer {
635
1021
  const stateTargetProps = {
636
1022
  root: { type: 'string', description: 'Optional state root directory override.' },
637
1023
  name: { type: 'string', description: 'Optional state file name override.' },
1024
+ agent: {
1025
+ type: 'string',
1026
+ description: "Optional agent scope: targets agents/<id>/skillstate.json (sanitized [A-Za-z0-9_-], <=64). Omit for the main agent; the server default comes from SKILLSTATE_AGENT_ID.",
1027
+ },
638
1028
  };
639
1029
  return [
640
1030
  {
@@ -698,7 +1088,7 @@ export class McpServer {
698
1088
  },
699
1089
  {
700
1090
  name: 'state.summary',
701
- description: 'Compact orientation over the state: goal, progress/next_steps/artifacts/blockers counts, the first 3 next steps, notes (truncated to 200 chars), state size, and session info (statePath, envelope version, protocolVersion, seq = writes applied through this session). Use this instead of state.get for fast context.',
1091
+ description: 'Compact orientation over the state: goal, progress/next_steps/artifacts/blockers counts, the first 3 next steps, notes (truncated to 200 chars), state size, and session info (statePath, envelope version, protocolVersion, seq = writes applied through this session, plus the lifecycle status/staleness from the .session-meta.json sidecar). Use this instead of state.get for fast context.',
702
1092
  inputSchema: { type: 'object', properties: { ...stateTargetProps } },
703
1093
  annotations: { readOnlyHint: true, destructiveHint: false },
704
1094
  },
@@ -708,6 +1098,24 @@ export class McpServer {
708
1098
  inputSchema: { type: 'object', properties: {} },
709
1099
  annotations: { readOnlyHint: true, destructiveHint: false },
710
1100
  },
1101
+ {
1102
+ name: 'state.finalize',
1103
+ description: "Signal that YOUR task is done: writes the session lifecycle status ('completed' or 'failed', optional free-text result) to the .session-meta.json sidecar so the orchestrator/agent.list sees a finished session instead of a running/interrupted one. Call it once at the very end of the procedure — not mid-run.",
1104
+ inputSchema: {
1105
+ type: 'object',
1106
+ properties: {
1107
+ status: {
1108
+ type: 'string',
1109
+ enum: ['completed', 'failed'],
1110
+ description: "'completed' when the procedure finished, 'failed' when it gave up.",
1111
+ },
1112
+ result: { type: 'string', description: 'Optional one-line outcome summary.' },
1113
+ ...stateTargetProps,
1114
+ },
1115
+ required: ['status'],
1116
+ },
1117
+ annotations: { readOnlyHint: false, destructiveHint: false },
1118
+ },
711
1119
  {
712
1120
  name: 'spec.get',
713
1121
  description: 'The procedural spec: id, name, version, instructions, the state schema, and a ready-made example_state_patch that passes validation. Use it to learn which keys and types the state accepts.',
@@ -720,6 +1128,39 @@ export class McpServer {
720
1128
  inputSchema: { type: 'object', properties: { ...stateTargetProps } },
721
1129
  annotations: { readOnlyHint: true, destructiveHint: false },
722
1130
  },
1131
+ {
1132
+ name: 'agent.list',
1133
+ description: "List sub-agent state copies: scans <stateDir>/agents/ and returns { agents: [{ id, statePath, exists, status, lastActivityAt, staleness ('active' | 'stale' = running with no writes for 5min | 'orphan' = no sidecar), ageMs (running sessions), summary (top-level keys + size, no values), lastModified }] }. Use it to discover parallel sub-agent sessions (hook session ids), what they touched, and whether they finished (status completed/merged), died (stale/interrupted), or are still alive.",
1134
+ inputSchema: { type: 'object', properties: {} },
1135
+ annotations: { readOnlyHint: true, destructiveHint: false },
1136
+ },
1137
+ {
1138
+ name: 'agent.read',
1139
+ description: "Read a sub-agent's state (READ-ONLY): { agent, statePath, state }. Pass { agent: \"<id from agent.list>\" }. Use it to see what a parallel sub-agent is doing before merging its work.",
1140
+ inputSchema: {
1141
+ type: 'object',
1142
+ properties: { agent: { type: 'string', description: 'Sub-agent id from agent.list.' } },
1143
+ required: ['agent'],
1144
+ },
1145
+ annotations: { readOnlyHint: true, destructiveHint: false },
1146
+ },
1147
+ {
1148
+ name: 'agent.merge',
1149
+ description: "Merge a sub-agent's state copy into the MAIN state (under the cross-process lock): keys only in the sub state are taken, nested plain objects merge recursively, conflicting scalars follow keep: 'main' (default — the main value wins) or 'sub'. Returns { agent, keep, state, changes }. The sub state is NOT deleted — it is marked mergedAt (history) and its session sidecar flips to status 'merged'.",
1150
+ inputSchema: {
1151
+ type: 'object',
1152
+ properties: {
1153
+ agent: { type: 'string', description: 'Sub-agent id from agent.list.' },
1154
+ keep: {
1155
+ type: 'string',
1156
+ enum: ['main', 'sub'],
1157
+ description: "Conflict policy for scalars (default 'main').",
1158
+ },
1159
+ },
1160
+ required: ['agent'],
1161
+ },
1162
+ annotations: { readOnlyHint: false, destructiveHint: false },
1163
+ },
723
1164
  ];
724
1165
  }
725
1166
  resourcesList() {
@@ -839,22 +1280,63 @@ export { resolveHostStateForCwd as resolveStatePathForCwd } from '@skillstate/co
839
1280
  * `SKILLSTATE_SPEC_PATH` when not passed explicitly). State resolution is
840
1281
  * ALWAYS per-project from the server's `process.cwd()`:
841
1282
  * `<cwd>/.skillstate/skillstate.json` (the global bucket when cwd === home).
842
- * Hosts that launch local MCP servers with the project as cwd therefore get
843
- * per-project state without any baked path. Explicit `args.root`/`args.name`
844
- * remain available for in-process embedding. Defaults to the canonical
845
- * InterCode CTF spec.
1283
+ * AGENT SCOPE: a non-empty `SKILLSTATE_AGENT_ID` env (or `args.agent`)
1284
+ * scopes the default state file to `agents/<id>/skillstate.json` — host
1285
+ * configs set the env per server instance when a sub-agent needs an
1286
+ * isolated copy; the default is `''` (the main agent) and every tool call
1287
+ * can still override via `{ agent }`. Hosts that launch local MCP servers
1288
+ * with the project as cwd therefore get per-project state without any
1289
+ * baked path. Explicit `args.root`/`args.name` remain available for
1290
+ * in-process embedding. Defaults to the canonical InterCode CTF spec.
1291
+ *
1292
+ * SESSION LIFECYCLE (release 2.3.0): launch stamps the session sidecar
1293
+ * `<stateDir>/.session-meta.json` with `{ status: 'running', startedAt,
1294
+ * agentId, protocolVersion }` — overwriting any previous
1295
+ * `interrupted`/`completed` marker (a new launch means a fresh run) — and
1296
+ * wires the SIGINT/SIGTERM handler that flushes
1297
+ * `{ status: 'interrupted' }` + the diff baseline before exiting. The
1298
+ * agent is expected to call `state.finalize` at the end of its procedure.
1299
+ * In-process embedders that do not own the process can pass
1300
+ * `installInterruptHandler: false` (tests) or call
1301
+ * `server.detachInterruptHandler()` afterwards.
846
1302
  */
847
1303
  export async function launch(args) {
848
1304
  const spec = resolveSpec(args, process.env);
849
1305
  const statePath = resolveHostStateForCwd(process.cwd(), os.homedir());
850
1306
  const root = args?.root ?? path.dirname(statePath);
851
1307
  const name = args?.name ?? path.basename(statePath);
1308
+ const agentEnv = process.env['SKILLSTATE_AGENT_ID'];
1309
+ const agent = args?.agent ??
1310
+ (typeof agentEnv === 'string' && agentEnv.length > 0 ? agentEnv : '');
1311
+ const sanitizedAgent = agent.length > 0 ? sanitizeAgentId(agent) : '';
852
1312
  const server = new McpServer({
853
1313
  spec,
854
1314
  root,
855
1315
  name,
1316
+ agent,
856
1317
  tracker: args?.tracker,
857
1318
  });
1319
+ // Lifecycle: a live launch means this session is running NOW. The
1320
+ // sidecar lives next to the DEFAULT state file (the agent's own
1321
+ // directory when the launch is agent-scoped). Written through the core
1322
+ // meta API (merge under the meta lock, atomic write).
1323
+ try {
1324
+ const defaultFilePath = sanitizedAgent.length > 0
1325
+ ? resolveStatePath(root, path.join('agents', sanitizedAgent, name))
1326
+ : resolveStatePath(root, name);
1327
+ await writeSessionMeta(path.dirname(defaultFilePath), {
1328
+ status: 'running',
1329
+ startedAt: new Date().toISOString(),
1330
+ agentId: sanitizedAgent,
1331
+ protocolVersion: PROTOCOL_VERSION,
1332
+ });
1333
+ }
1334
+ catch {
1335
+ // Best-effort stamp: an unwritable sidecar must not block the server.
1336
+ }
1337
+ if (args?.installInterruptHandler !== false) {
1338
+ server.installInterruptHandler();
1339
+ }
858
1340
  return server.start(args?.input, args?.output);
859
1341
  }
860
1342
  //# sourceMappingURL=mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillstate/mcp",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "Zero-dependency MCP server + adapter for the skillstate runtime.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,6 @@
25
25
  },
26
26
  "license": "MIT",
27
27
  "dependencies": {
28
- "@skillstate/core": "^2.0.0"
28
+ "@skillstate/core": "^2.2.1"
29
29
  }
30
30
  }