@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 +57 -5
- package/dist/mcp-server.d.ts +135 -9
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +539 -57
- package/dist/mcp-server.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@skillstate/mcp)
|
|
8
8
|
[](https://www.npmjs.com/package/@skillstate/mcp)
|
|
9
|
-
[](https://github.com/vitkuz573/skillstate)
|
|
10
10
|
[](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" +
|
|
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`, `
|
|
132
|
-
|
|
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,
|
package/dist/mcp-server.d.ts
CHANGED
|
@@ -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
|
|
78
|
-
*
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
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
|
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -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
|
|
185
|
-
*
|
|
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
|
-
|
|
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
|
-
/**
|
|
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 =
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
this.
|
|
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 =
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
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
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
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
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
this.
|
|
533
|
-
|
|
534
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
*
|
|
843
|
-
*
|
|
844
|
-
*
|
|
845
|
-
*
|
|
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
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
28
|
+
"@skillstate/core": "^2.2.1"
|
|
29
29
|
}
|
|
30
30
|
}
|