wicked-crew 0.9.13 → 0.10.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/dist/api/job-title.d.ts +24 -0
- package/dist/api/job-title.d.ts.map +1 -0
- package/dist/api/job-title.js +97 -0
- package/dist/api/job-title.js.map +1 -0
- package/dist/api/mcp.d.ts +26 -6
- package/dist/api/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +87 -10
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/roster-standing.d.ts +27 -1
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +126 -10
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +60 -13
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +23 -1
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +66 -1
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-agents.d.ts +135 -0
- package/dist/api/seat-agents.d.ts.map +1 -0
- package/dist/api/seat-agents.js +186 -0
- package/dist/api/seat-agents.js.map +1 -0
- package/dist/api/seat-health.d.ts +22 -0
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +53 -6
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-probe.d.ts +11 -2
- package/dist/api/seat-probe.d.ts.map +1 -1
- package/dist/api/seat-probe.js +28 -9
- package/dist/api/seat-probe.js.map +1 -1
- package/dist/api/seat-record.d.ts +1 -1
- package/dist/api/seat-record.js +1 -1
- package/dist/api/seat-scrub.d.ts +65 -0
- package/dist/api/seat-scrub.d.ts.map +1 -0
- package/dist/api/seat-scrub.js +193 -0
- package/dist/api/seat-scrub.js.map +1 -0
- package/dist/api/seat-standing.d.ts +3 -2
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +8 -7
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/seat-version.d.ts +81 -0
- package/dist/api/seat-version.d.ts.map +1 -0
- package/dist/api/seat-version.js +174 -0
- package/dist/api/seat-version.js.map +1 -0
- package/dist/api/server.js +2 -2
- package/dist/api/server.js.map +1 -1
- package/dist/core/adapter.d.ts +12 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +25 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +8 -0
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/editors/registry.d.ts +13 -13
- package/dist/editors/registry.d.ts.map +1 -1
- package/dist/editors/registry.js +1 -0
- package/dist/editors/registry.js.map +1 -1
- package/dist/editors/routes.d.ts +19 -1
- package/dist/editors/routes.d.ts.map +1 -1
- package/dist/editors/routes.js +85 -7
- package/dist/editors/routes.js.map +1 -1
- package/dist/interactive/council-outcome.js +1 -1
- package/dist/mcp/broker.d.ts.map +1 -1
- package/dist/mcp/broker.js +17 -0
- package/dist/mcp/broker.js.map +1 -1
- package/dist/mcp/classify.d.ts +12 -2
- package/dist/mcp/classify.d.ts.map +1 -1
- package/dist/mcp/classify.js +5 -2
- package/dist/mcp/classify.js.map +1 -1
- package/dist/mcp/policies.d.ts +10 -1
- package/dist/mcp/policies.d.ts.map +1 -1
- package/dist/mcp/policies.js +16 -4
- package/dist/mcp/policies.js.map +1 -1
- package/dist/mcp/probe.d.ts +2 -0
- package/dist/mcp/probe.d.ts.map +1 -1
- package/dist/mcp/probe.js.map +1 -1
- package/dist/mcp/registry-store.d.ts +6 -0
- package/dist/mcp/registry-store.d.ts.map +1 -1
- package/dist/mcp/registry-store.js.map +1 -1
- package/dist/mcp/registry.d.ts +83 -7
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +213 -24
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/rest.d.ts +29 -2
- package/dist/mcp/rest.d.ts.map +1 -1
- package/dist/mcp/rest.js +123 -2
- package/dist/mcp/rest.js.map +1 -1
- package/dist/mcp-inspect/routes.d.ts +55 -0
- package/dist/mcp-inspect/routes.d.ts.map +1 -0
- package/dist/mcp-inspect/routes.js +268 -0
- package/dist/mcp-inspect/routes.js.map +1 -0
- package/dist/mcp-inspect/session.d.ts +153 -0
- package/dist/mcp-inspect/session.d.ts.map +1 -0
- package/dist/mcp-inspect/session.js +487 -0
- package/dist/mcp-inspect/session.js.map +1 -0
- package/dist/projects/state-home.d.ts +2 -1
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +34 -4
- package/dist/projects/state-home.js.map +1 -1
- package/dist/standing-orders/parse.js +1 -1
- package/dist/studio/assets/index-C6DLorst.css +32 -0
- package/dist/studio/assets/index-CAhuFWeA.js +609 -0
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +553 -144
- package/endpoint-manifest.json +61 -15
- package/package.json +3 -3
- package/dist/studio/assets/index-DlZl1q2Q.js +0 -593
- package/dist/studio/assets/index-eLCOoPWX.css +0 -32
package/dist/mcp/registry.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* from its result (`probe.ts`).
|
|
17
17
|
*/
|
|
18
18
|
import { canonicalJson, deriveToolClass, effectiveToolClass, mcpSubject, parseMcpSubject, sha256Hex, toolSchemaHash } from './classify.js';
|
|
19
|
+
import { restTarget } from './rest.js';
|
|
19
20
|
import { KEYCHAIN_SERVICE, keychainRef, parseSecretRef, resolveSecret, secretIsSet } from './secrets.js';
|
|
20
21
|
/** How long a preview can be saved. */
|
|
21
22
|
export const PREVIEW_TTL_MS = 15 * 60 * 1000;
|
|
@@ -84,11 +85,22 @@ export class McpRegistry {
|
|
|
84
85
|
const what = config.kind === 'rest' ? 'the OpenAPI document could not be imported' : 'the server did not answer tools/list';
|
|
85
86
|
throw new McpRegistryError(502, 'probe_failed', `${what}: ${result.error}`);
|
|
86
87
|
}
|
|
87
|
-
const tools = result.tools.map((t) => ({ ...t, schemaHash:
|
|
88
|
+
const tools = result.tools.map((t) => ({ ...t, schemaHash: hashOf(config, t) }));
|
|
88
89
|
const previewHash = sha256Hex(canonicalJson({ config, tools: tools.map((t) => [t.name, t.schemaHash]) }));
|
|
89
90
|
const expiresAt = this.now() + PREVIEW_TTL_MS;
|
|
90
|
-
this.hold(previewHash, { config, tools, expiresAt, secret: stagedSecret });
|
|
91
91
|
const existing = (await this.deps.store.read()).servers.find((s) => s.name === config.name);
|
|
92
|
+
// (G2) A mismatch with the spec's `servers`, or a private address, needs the operator to name
|
|
93
|
+
// the origin at save, unless an earlier save of this server already confirmed that origin.
|
|
94
|
+
const egress = config.kind !== 'rest' || result.egress === undefined ? null : { ...result.egress, confirmRequired: egressRefusal(result.egress, null, existing) !== null };
|
|
95
|
+
if (config.kind === 'rest' && egress === null)
|
|
96
|
+
throw new McpRegistryError(502, 'probe_failed', 'the rest probe did not report where its calls go');
|
|
97
|
+
this.hold(previewHash, { config, tools, expiresAt, secret: stagedSecret, egress });
|
|
98
|
+
const was = (name) => existing?.tools.find((p) => p.name === name);
|
|
99
|
+
// The override a save keeps: only while the tool's schema is unchanged (as `save` decides).
|
|
100
|
+
const survivingOverride = (t) => {
|
|
101
|
+
const w = was(t.name);
|
|
102
|
+
return w !== undefined && w.schemaHash === t.schemaHash ? w.classOverride : null;
|
|
103
|
+
};
|
|
92
104
|
return {
|
|
93
105
|
previewHash,
|
|
94
106
|
expiresAt: new Date(expiresAt).toISOString(),
|
|
@@ -100,20 +112,34 @@ export class McpRegistry {
|
|
|
100
112
|
description: t.description,
|
|
101
113
|
annotations: t.annotations,
|
|
102
114
|
inputSchema: t.inputSchema,
|
|
103
|
-
class: deriveToolClass(t.annotations),
|
|
115
|
+
class: effectiveToolClass(deriveToolClass(t.annotations), survivingOverride(t)),
|
|
116
|
+
classOverride: survivingOverride(t),
|
|
104
117
|
schemaHash: t.schemaHash,
|
|
118
|
+
enabledOnSave: enabledOnSave(was(t.name), t),
|
|
105
119
|
...(config.kind === 'rest' ? { rest: t.rest ?? null } : {}),
|
|
106
120
|
})),
|
|
107
121
|
diff: existing === undefined ? null : diffTools(existing.tools, tools),
|
|
108
122
|
...(result.skipped !== undefined && result.skipped.length > 0 ? { skipped: result.skipped } : {}),
|
|
123
|
+
...(egress !== null ? { egress } : {}),
|
|
109
124
|
};
|
|
110
125
|
}
|
|
111
126
|
/**
|
|
112
127
|
* Register exactly what a preview showed. Saving over an existing name re-registers it: every
|
|
113
|
-
* tool of the preview becomes `registered`, a tool it no longer lists becomes `gone`, a
|
|
114
|
-
*
|
|
128
|
+
* tool of the preview becomes `registered`, a tool it no longer lists becomes `gone`, and a class
|
|
129
|
+
* override survives only while the schema is unchanged.
|
|
130
|
+
*
|
|
131
|
+
* (G1, DES-data-connectors §3) A tool's `enabled` switch is {@link enabledOnSave}: a `write` or
|
|
132
|
+
* `destructive` tool that is new, or whose schema changed, is registered DISABLED. `enabledWrites`
|
|
133
|
+
* is the operator's per-tool grant (the preview's write checkbox): each name must be a write or
|
|
134
|
+
* destructive tool of this preview, and is registered enabled. The route allows a grant from a
|
|
135
|
+
* human operator only and audits it. A grant enables a tool; `MCP-FIRST-USE` still asks on its
|
|
136
|
+
* first call.
|
|
137
|
+
*
|
|
138
|
+
* (G2) `allowOrigin` is the operator naming the exact origin a `rest` server's calls go to. It is
|
|
139
|
+
* required when the preview's `egress.confirmRequired` (see {@link checkEgress}) and remembered
|
|
140
|
+
* on the record, so a re-save over the same origin does not ask again.
|
|
115
141
|
*/
|
|
116
|
-
async save(previewHash) {
|
|
142
|
+
async save(previewHash, enabledWrites = [], allowOrigin = null) {
|
|
117
143
|
if (previewHash === undefined) {
|
|
118
144
|
throw new McpRegistryError(409, 'preview_required', 'saving a server needs the previewHash of a preview of it: POST /mcp/servers/preview first');
|
|
119
145
|
}
|
|
@@ -122,6 +148,10 @@ export class McpRegistry {
|
|
|
122
148
|
this.previews.delete(previewHash);
|
|
123
149
|
throw new McpRegistryError(409, 'preview_stale', 'that previewHash is unknown or expired: preview the server again, then save');
|
|
124
150
|
}
|
|
151
|
+
// A wrong grant is refused before the preview is spent, so the operator can correct it and save again.
|
|
152
|
+
await this.checkWriteGrants(previewHash, enabledWrites);
|
|
153
|
+
await this.checkEgress(previewHash, allowOrigin);
|
|
154
|
+
const granted = new Set(enabledWrites);
|
|
125
155
|
this.previews.delete(previewHash);
|
|
126
156
|
const stamp = new Date(this.now()).toISOString();
|
|
127
157
|
// (crew#719) The staged secret and the registry row commit TOGETHER. Studio used to write the
|
|
@@ -140,6 +170,13 @@ export class McpRegistry {
|
|
|
140
170
|
await this.deps.secrets.set(held.config.name, held.secret);
|
|
141
171
|
const saved = await this.restoreSecretOnFailure(held.config.name, held.secret !== null, prior, () => this.deps.store.mutate((file) => {
|
|
142
172
|
const prior = file.servers.find((s) => s.name === held.config.name);
|
|
173
|
+
// (G2) Re-judged against the record as it is NOW, inside the write: a confirmation the
|
|
174
|
+
// preview inherited from a server since removed or re-pointed does not carry over.
|
|
175
|
+
if (held.egress !== null) {
|
|
176
|
+
const refusal = egressRefusal(held.egress, allowOrigin, prior);
|
|
177
|
+
if (refusal !== null)
|
|
178
|
+
throw refusal;
|
|
179
|
+
}
|
|
143
180
|
const tools = held.tools.map((t) => {
|
|
144
181
|
const was = prior?.tools.find((p) => p.name === t.name);
|
|
145
182
|
return {
|
|
@@ -149,7 +186,7 @@ export class McpRegistry {
|
|
|
149
186
|
outputSchema: t.outputSchema,
|
|
150
187
|
annotations: t.annotations,
|
|
151
188
|
classOverride: was !== undefined && was.schemaHash === t.schemaHash ? was.classOverride : null,
|
|
152
|
-
enabled:
|
|
189
|
+
enabled: granted.has(t.name) || enabledOnSave(was, t),
|
|
153
190
|
schemaHash: t.schemaHash,
|
|
154
191
|
observedSchemaHash: t.schemaHash,
|
|
155
192
|
present: true,
|
|
@@ -160,8 +197,12 @@ export class McpRegistry {
|
|
|
160
197
|
if (!tools.some((t) => t.name === old.name))
|
|
161
198
|
tools.push({ ...old, present: false });
|
|
162
199
|
}
|
|
200
|
+
const origin = held.egress?.origin ?? null;
|
|
201
|
+
// The confirmed origin is kept while the server still goes there: named now, or by an earlier save.
|
|
202
|
+
const allowedOrigin = origin !== null && (allowOrigin === origin || prior?.allowedOrigin === origin) ? origin : null;
|
|
163
203
|
const record = {
|
|
164
204
|
...held.config,
|
|
205
|
+
...(allowedOrigin !== null ? { allowedOrigin } : {}),
|
|
165
206
|
enabled: prior?.enabled ?? true,
|
|
166
207
|
health: { state: 'ok', consecutiveFailures: 0, checkedAt: stamp, lastError: null },
|
|
167
208
|
registeredAt: prior?.registeredAt ?? stamp,
|
|
@@ -206,12 +247,76 @@ export class McpRegistry {
|
|
|
206
247
|
throw err;
|
|
207
248
|
}
|
|
208
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* (G1) Refuse an `enabledWrites` list that does not fit the held preview: a name it does not list
|
|
252
|
+
* (400 `unknown_tool`), or a tool that would not be a write once saved (400 `not_a_write_tool`) —
|
|
253
|
+
* by its annotations, or by a class override that survives the save (schema unchanged). The route
|
|
254
|
+
* calls this before it withdraws any approval, so a refused grant changes nothing. An unknown or
|
|
255
|
+
* expired preview is left for `save` to refuse.
|
|
256
|
+
*/
|
|
257
|
+
async checkWriteGrants(previewHash, enabledWrites) {
|
|
258
|
+
if (enabledWrites.length === 0)
|
|
259
|
+
return;
|
|
260
|
+
const held = this.previews.get(previewHash);
|
|
261
|
+
if (held === undefined || held.expiresAt <= this.now())
|
|
262
|
+
return;
|
|
263
|
+
const prior = (await this.deps.store.read()).servers.find((s) => s.name === held.config.name);
|
|
264
|
+
for (const name of enabledWrites) {
|
|
265
|
+
const t = held.tools.find((x) => x.name === name);
|
|
266
|
+
if (t === undefined)
|
|
267
|
+
throw new McpRegistryError(400, 'unknown_tool', `enabledWrites names ${name}, which this preview does not list`);
|
|
268
|
+
const was = prior?.tools.find((p) => p.name === name);
|
|
269
|
+
const override = was !== undefined && was.schemaHash === t.schemaHash ? was.classOverride : null;
|
|
270
|
+
if (!isWriteGrant(t.annotations, override)) {
|
|
271
|
+
throw new McpRegistryError(400, 'not_a_write_tool', `enabledWrites names ${name}, a read tool; read tools are enabled on save without a grant`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* (G2, DES-data-connectors §3) Refuse a save whose egress the operator has not confirmed: when
|
|
277
|
+
* the held preview's `egress.confirmRequired` (the base URL matches none of the spec's `servers`,
|
|
278
|
+
* or its host is a loopback/private address), `allowOrigin` must be exactly `egress.origin`
|
|
279
|
+
* (409 `egress_unconfirmed`). An `allowOrigin` that names another origin is refused the same way
|
|
280
|
+
* even when no confirmation is needed, and one for a server that is not `rest` is a 400
|
|
281
|
+
* `egress_not_rest`. Like {@link checkWriteGrants} it changes nothing, so the route calls it
|
|
282
|
+
* before any approval is withdrawn; `save` judges it again inside its write. An unknown or
|
|
283
|
+
* expired preview is left for `save` to refuse.
|
|
284
|
+
*/
|
|
285
|
+
async checkEgress(previewHash, allowOrigin) {
|
|
286
|
+
const held = this.previews.get(previewHash);
|
|
287
|
+
if (held === undefined || held.expiresAt <= this.now())
|
|
288
|
+
return;
|
|
289
|
+
if (held.egress === null) {
|
|
290
|
+
if (allowOrigin !== null)
|
|
291
|
+
throw new McpRegistryError(400, 'egress_not_rest', 'allowOrigin is for a rest server');
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const prior = (await this.deps.store.read()).servers.find((s) => s.name === held.config.name);
|
|
295
|
+
const refusal = egressRefusal(held.egress, allowOrigin, prior);
|
|
296
|
+
if (refusal !== null)
|
|
297
|
+
throw refusal;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* (G2) Whether every saved tool of the `rest` server `name` has a hash that covers the server's
|
|
301
|
+
* target. `false` for a registration saved before G2 (or whose url or auth header changed outside
|
|
302
|
+
* a save): its approvals never covered the target, so a re-save withdraws them all. `true` for an
|
|
303
|
+
* unknown server and for an MCP server.
|
|
304
|
+
*/
|
|
305
|
+
async targetBound(name) {
|
|
306
|
+
const s = (await this.deps.store.read()).servers.find((x) => x.name === name);
|
|
307
|
+
return s === undefined || s.tools.every((t) => targetBound(s, t));
|
|
308
|
+
}
|
|
209
309
|
/** What a held preview would register: its server name and each tool's schema hash (S6). */
|
|
210
310
|
peekPreview(previewHash) {
|
|
211
311
|
const held = this.previews.get(previewHash);
|
|
212
312
|
if (held === undefined || held.expiresAt <= this.now())
|
|
213
313
|
return null;
|
|
214
|
-
return {
|
|
314
|
+
return {
|
|
315
|
+
name: held.config.name,
|
|
316
|
+
tools: held.tools.map((t) => ({ name: t.name, schemaHash: t.schemaHash })),
|
|
317
|
+
egress: held.egress,
|
|
318
|
+
target: held.config.kind === 'rest' ? restTarget(held.config) : null,
|
|
319
|
+
};
|
|
215
320
|
}
|
|
216
321
|
async setServerEnabled(name, enabled) {
|
|
217
322
|
const rec = await this.deps.store.mutate((file) => {
|
|
@@ -241,24 +346,37 @@ export class McpRegistry {
|
|
|
241
346
|
}
|
|
242
347
|
}
|
|
243
348
|
}
|
|
244
|
-
|
|
349
|
+
/**
|
|
350
|
+
* Set a tool's switch and/or class override. (G1) A patch that leaves a tool ENABLED and a WRITE
|
|
351
|
+
* (by its own annotations or by its class after the patch) when it was not both before is a write
|
|
352
|
+
* grant: turning a write on, or re-classing an enabled read as a write. It is refused (403
|
|
353
|
+
* `write_grant_human_only`) unless `opts.mayGrantWrite`, which the route sets for a human operator
|
|
354
|
+
* only. Turning a tool off, and enabling a read, need no grant. `grantedWrite` says whether this
|
|
355
|
+
* patch was one, so the route audits exactly the grants.
|
|
356
|
+
*/
|
|
357
|
+
async patchTool(subject, patch, opts = {}) {
|
|
245
358
|
const parts = parseMcpSubject(subject);
|
|
246
359
|
if (parts === null)
|
|
247
360
|
throw new McpRegistryError(404, 'unknown_tool', `no tool ${subject}`);
|
|
248
361
|
const stamp = new Date(this.now()).toISOString();
|
|
249
|
-
const { server, tool } = await this.deps.store.mutate((file) => {
|
|
362
|
+
const { server, tool, grant } = await this.deps.store.mutate((file) => {
|
|
250
363
|
const s = this.find(file.servers, parts.server);
|
|
251
364
|
const t = s.tools.find((x) => x.name === parts.tool);
|
|
252
365
|
if (t === undefined)
|
|
253
366
|
throw new McpRegistryError(404, 'unknown_tool', `no tool ${subject}`);
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
367
|
+
const before = t.enabled && isWriteGrant(t.annotations, t.classOverride);
|
|
368
|
+
const enabled = patch.enabled ?? t.enabled;
|
|
369
|
+
const override = patch.classOverride !== undefined ? patch.classOverride : t.classOverride;
|
|
370
|
+
const grant = !before && enabled && isWriteGrant(t.annotations, override);
|
|
371
|
+
if (grant && opts.mayGrantWrite !== true) {
|
|
372
|
+
throw new McpRegistryError(403, 'write_grant_human_only', `${subject} would be an enabled write tool: only a human operator can grant that`);
|
|
373
|
+
}
|
|
374
|
+
t.enabled = enabled;
|
|
375
|
+
t.classOverride = override;
|
|
258
376
|
s.updatedAt = stamp;
|
|
259
|
-
return { server: s, tool: t };
|
|
377
|
+
return { server: s, tool: t, grant };
|
|
260
378
|
});
|
|
261
|
-
return toolView(server
|
|
379
|
+
return { tool: toolView(server, tool), grantedWrite: grant };
|
|
262
380
|
}
|
|
263
381
|
/** Probe a registered server again: record its health and its tool diff. */
|
|
264
382
|
async test(name) {
|
|
@@ -280,7 +398,7 @@ export class McpRegistry {
|
|
|
280
398
|
s.health = { state, consecutiveFailures: failures, checkedAt: stamp, lastError: result.error };
|
|
281
399
|
return s;
|
|
282
400
|
}
|
|
283
|
-
const probed = result.tools.map((t) => ({ ...t, schemaHash:
|
|
401
|
+
const probed = result.tools.map((t) => ({ ...t, schemaHash: hashOf(config, t) }));
|
|
284
402
|
diff = diffTools(s.tools, probed);
|
|
285
403
|
for (const t of s.tools) {
|
|
286
404
|
const now = probed.find((p) => p.name === t.name);
|
|
@@ -300,7 +418,8 @@ export class McpRegistry {
|
|
|
300
418
|
outputSchema: p.outputSchema,
|
|
301
419
|
annotations: p.annotations,
|
|
302
420
|
classOverride: null,
|
|
303
|
-
|
|
421
|
+
// G1: a tool the server added is shown with the switch a save would give it.
|
|
422
|
+
enabled: enabledOnSave(undefined, p),
|
|
304
423
|
schemaHash: null,
|
|
305
424
|
observedSchemaHash: p.schemaHash,
|
|
306
425
|
present: true,
|
|
@@ -347,7 +466,8 @@ export class McpRegistry {
|
|
|
347
466
|
rest: t?.rest ?? null,
|
|
348
467
|
annotations: t?.annotations ?? null,
|
|
349
468
|
classOverride: t?.classOverride ?? null,
|
|
350
|
-
registered: s.enabled && t !== undefined && t.enabled &&
|
|
469
|
+
registered: s.enabled && t !== undefined && t.enabled && statusOf(s, t) === 'registered',
|
|
470
|
+
resaveRequired: t !== undefined && !targetBound(s, t),
|
|
351
471
|
};
|
|
352
472
|
}
|
|
353
473
|
/**
|
|
@@ -361,7 +481,7 @@ export class McpRegistry {
|
|
|
361
481
|
if (!s.enabled)
|
|
362
482
|
continue;
|
|
363
483
|
for (const t of s.tools) {
|
|
364
|
-
if (!t.enabled ||
|
|
484
|
+
if (!t.enabled || statusOf(s, t) !== 'registered')
|
|
365
485
|
continue;
|
|
366
486
|
out.push({
|
|
367
487
|
server: s.name,
|
|
@@ -376,6 +496,14 @@ export class McpRegistry {
|
|
|
376
496
|
}
|
|
377
497
|
return out;
|
|
378
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* The MCP inspector's resolution of a registered server (DES-MCP-INSPECTOR-001 §3): its config,
|
|
501
|
+
* enabled or not (an operator debugs a server it switched off), or `null` for no such name.
|
|
502
|
+
*/
|
|
503
|
+
async inspectTarget(name) {
|
|
504
|
+
const s = (await this.deps.store.read()).servers.find((x) => x.name === name);
|
|
505
|
+
return s === undefined ? null : configOf(s);
|
|
506
|
+
}
|
|
379
507
|
/**
|
|
380
508
|
* The secret a call to `config` is made with, resolved at the moment of the call and nowhere
|
|
381
509
|
* else. `missing` = the server names a secret that resolves to nothing: the call is not made
|
|
@@ -428,7 +556,7 @@ export class McpRegistry {
|
|
|
428
556
|
return (await secretIsSet(auth.ref, this.deps.secrets, this.env)) ? 'set' : 'missing';
|
|
429
557
|
}
|
|
430
558
|
async view(s) {
|
|
431
|
-
const tools = s.tools.map((t) => toolView(s
|
|
559
|
+
const tools = s.tools.map((t) => toolView(s, t));
|
|
432
560
|
const live = tools.filter((t) => t.status !== 'gone');
|
|
433
561
|
return {
|
|
434
562
|
...configView(configOf(s)),
|
|
@@ -464,17 +592,78 @@ function configView(c) {
|
|
|
464
592
|
}
|
|
465
593
|
return view;
|
|
466
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* (G1, DES-data-connectors §3) The switch a save gives a tool when the operator grants nothing:
|
|
597
|
+
* - the schema the operator last saved, unchanged: its switch as they left it;
|
|
598
|
+
* - otherwise a `write` or `destructive` tool (by its own annotations; an override does not survive
|
|
599
|
+
* a schema change) is DISABLED until the operator grants it, so a grant covers one schema;
|
|
600
|
+
* - otherwise a `read` tool keeps its switch, and a new one is enabled.
|
|
601
|
+
*/
|
|
602
|
+
export function enabledOnSave(was, next) {
|
|
603
|
+
if (was !== undefined && was.schemaHash !== null && was.schemaHash === next.schemaHash)
|
|
604
|
+
return was.enabled;
|
|
605
|
+
if (deriveToolClass(next.annotations) !== 'read')
|
|
606
|
+
return false;
|
|
607
|
+
return was?.enabled ?? true;
|
|
608
|
+
}
|
|
609
|
+
/** (G1) Whether enabling a tool with these annotations and class override grants a write. */
|
|
610
|
+
export function isWriteGrant(annotations, classOverride) {
|
|
611
|
+
const derived = deriveToolClass(annotations);
|
|
612
|
+
return derived !== 'read' || effectiveToolClass(derived, classOverride) !== 'read';
|
|
613
|
+
}
|
|
467
614
|
export function toolStatus(t) {
|
|
468
615
|
if (!t.present)
|
|
469
616
|
return 'gone';
|
|
470
617
|
return t.schemaHash !== null && t.schemaHash === t.observedSchemaHash ? 'registered' : 'unregistered';
|
|
471
618
|
}
|
|
472
|
-
|
|
619
|
+
/**
|
|
620
|
+
* (G2) Why saving a `rest` preview with this egress is refused, or `null` when it may be saved: an
|
|
621
|
+
* `allowOrigin` naming another origin; or a base URL that matches none of the spec's `servers`, a
|
|
622
|
+
* private host, or one that did not resolve, with neither `allowOrigin` naming the origin nor
|
|
623
|
+
* `prior` (the record as it is now) holding it as confirmed.
|
|
624
|
+
*/
|
|
625
|
+
function egressRefusal(egress, allowOrigin, prior) {
|
|
626
|
+
if (allowOrigin !== null && allowOrigin !== egress.origin) {
|
|
627
|
+
return new McpRegistryError(409, 'egress_unconfirmed', `allowOrigin ${JSON.stringify(allowOrigin)} is not this server's origin; to confirm it, name exactly ${egress.origin}`);
|
|
628
|
+
}
|
|
629
|
+
if (allowOrigin !== null || prior?.allowedOrigin === egress.origin)
|
|
630
|
+
return null;
|
|
631
|
+
const why = [
|
|
632
|
+
...(egress.matches ? [] : [egress.servers.length === 0 ? 'the OpenAPI document names no server crew can check it against' : `it matches none of the OpenAPI document's servers (${egress.servers.join(', ')})`]),
|
|
633
|
+
...(egress.privateAddress ? ['it is a loopback or private address'] : []),
|
|
634
|
+
...(egress.resolved ? [] : ['its host did not resolve, so crew could not check that it is not a private address']),
|
|
635
|
+
];
|
|
636
|
+
if (why.length === 0)
|
|
637
|
+
return null;
|
|
638
|
+
return new McpRegistryError(409, 'egress_unconfirmed', `the calls would go to ${egress.origin}${egress.basePath}, but ${why.join(', and ')}: to use it anyway, save with allowOrigin set to exactly ${egress.origin}`);
|
|
639
|
+
}
|
|
640
|
+
/** A tool's schema hash: a `rest` tool's also covers its server's target (G2). */
|
|
641
|
+
function hashOf(config, t) {
|
|
642
|
+
return toolSchemaHash(t, config.kind === 'rest' ? restTarget(config) : null);
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* (G2) Whether a saved `rest` tool's hash covers the target its server's calls go to now. The
|
|
646
|
+
* hash is recomputed from the saved tool and the saved config, so a tool saved before G2 (whose
|
|
647
|
+
* hash has no target), and a record whose url or auth header changed outside a save, read
|
|
648
|
+
* `unregistered` and are denied (D-5) until the operator saves the server again. Nothing re-hashes
|
|
649
|
+
* an existing registration silently.
|
|
650
|
+
*/
|
|
651
|
+
function targetBound(s, t) {
|
|
652
|
+
if (s.kind !== 'rest' || t.schemaHash === null)
|
|
653
|
+
return true;
|
|
654
|
+
return hashOf(s, t) === t.schemaHash;
|
|
655
|
+
}
|
|
656
|
+
/** {@link toolStatus}, plus (G2) a `rest` tool whose saved hash does not cover its target is `unregistered`. */
|
|
657
|
+
function statusOf(s, t) {
|
|
658
|
+
const status = toolStatus(t);
|
|
659
|
+
return status === 'registered' && !targetBound(s, t) ? 'unregistered' : status;
|
|
660
|
+
}
|
|
661
|
+
function toolView(s, t) {
|
|
473
662
|
const derivedClass = deriveToolClass(t.annotations);
|
|
474
663
|
return {
|
|
475
664
|
name: t.name,
|
|
476
665
|
...(t.rest != null ? { rest: t.rest } : {}),
|
|
477
|
-
subject: mcpSubject(
|
|
666
|
+
subject: mcpSubject(s.name, t.name),
|
|
478
667
|
description: t.description,
|
|
479
668
|
annotations: t.annotations,
|
|
480
669
|
inputSchema: t.inputSchema,
|
|
@@ -482,7 +671,7 @@ function toolView(server, t) {
|
|
|
482
671
|
classOverride: t.classOverride,
|
|
483
672
|
class: effectiveToolClass(derivedClass, t.classOverride),
|
|
484
673
|
enabled: t.enabled,
|
|
485
|
-
status:
|
|
674
|
+
status: statusOf(s, t),
|
|
486
675
|
schemaHash: t.schemaHash,
|
|
487
676
|
observedSchemaHash: t.observedSchemaHash,
|
|
488
677
|
};
|
package/dist/mcp/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/mcp/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/mcp/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/rest.d.ts
CHANGED
|
@@ -19,8 +19,9 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Ideas only from ContextForge (`openapi_service.py`, `tool_service.py`); no code is copied.
|
|
21
21
|
*/
|
|
22
|
-
import type { McpRestMapping, McpToolAnnotations } from '../core/types.js';
|
|
22
|
+
import type { McpRestEgress, McpRestMapping, McpToolAnnotations } from '../core/types.js';
|
|
23
23
|
import type { UpstreamToolResult } from './invoke.js';
|
|
24
|
+
import type { HashedRestTarget } from './classify.js';
|
|
24
25
|
import type { McpUpstreamConfig, ProbedTool, ProbeResult } from './probe.js';
|
|
25
26
|
import { UpstreamCallError } from './upstream-error.js';
|
|
26
27
|
export declare const REST_SPEC_TIMEOUT_MS = 10000;
|
|
@@ -40,6 +41,28 @@ export type RestProbedTool = ProbedTool & {
|
|
|
40
41
|
};
|
|
41
42
|
/** Parse a base URL: http(s), no credentials, no query or fragment. `null` = not acceptable. */
|
|
42
43
|
export declare function parseBaseUrl(raw: string | null): URL | null;
|
|
44
|
+
/**
|
|
45
|
+
* (G2, DES-data-connectors §3) What a `rest` server's calls go to, and so what its tools' hash
|
|
46
|
+
* covers (`toolSchemaHash`): the base URL's origin and path, and the header its secret rides in
|
|
47
|
+
* (lowercased; header names are case-insensitive). `null` = no valid base URL (never callable).
|
|
48
|
+
*/
|
|
49
|
+
export declare function restTarget(config: Pick<McpUpstreamConfig, 'url' | 'auth'>): HashedRestTarget | null;
|
|
50
|
+
/** Whether an IP literal is a loopback/private/link-local/unique-local address. Not an IP → `false`. */
|
|
51
|
+
export declare function isPrivateAddress(ip: string): boolean;
|
|
52
|
+
/** Resolves a hostname to its addresses; `[]` when it does not resolve. Injectable for tests. */
|
|
53
|
+
export type RestLookup = (hostname: string) => Promise<string[]>;
|
|
54
|
+
export declare const dnsLookup: RestLookup;
|
|
55
|
+
/**
|
|
56
|
+
* The spec's `servers`, each resolved to an absolute URL: `{variable}`s take their `default`, and a
|
|
57
|
+
* relative URL resolves against the document's own URL (OpenAPI 3 §4.8.5). A server that can't be
|
|
58
|
+
* resolved (a variable with no default, a relative URL in a pasted document) is not checkable and
|
|
59
|
+
* is left out. No `servers` means `[{url: "/"}]`, as the spec defines.
|
|
60
|
+
*/
|
|
61
|
+
export declare function specServers(doc: Record<string, unknown>, specUrl: string | null): URL[];
|
|
62
|
+
/** What the probe finds of a `rest` server's egress (G2); the registry adds `confirmRequired`. */
|
|
63
|
+
export type RestEgress = Omit<McpRestEgress, 'confirmRequired'>;
|
|
64
|
+
/** Check `base` against the spec's `servers`, and whether its host is a private address. */
|
|
65
|
+
export declare function restEgress(base: URL, doc: Record<string, unknown>, specUrl: string | null, lookupImpl?: RestLookup): Promise<RestEgress>;
|
|
43
66
|
/**
|
|
44
67
|
* The request URL for `pathTemplate` filled with `values`, pinned to `base`: the same origin, and a
|
|
45
68
|
* path under the base path. Anything else is a {@link RestBoundaryError}.
|
|
@@ -85,8 +108,12 @@ export type RestFetch = typeof fetch;
|
|
|
85
108
|
* The document's URL is NOT pinned to the base URL, by design: it is the operator's own input at
|
|
86
109
|
* preview time (an API's spec often lives elsewhere, e.g. a docs host), not a worker's call, and it
|
|
87
110
|
* carries no secret off the API's origin. The host pin (I6) is on the tools' calls.
|
|
111
|
+
*
|
|
112
|
+
* (G2) It also answers `egress`: the base URL checked against the document's `servers`, and
|
|
113
|
+
* whether its host is a private address. The registry refuses to save a mismatch or a private
|
|
114
|
+
* address unless the operator names that exact origin.
|
|
88
115
|
*/
|
|
89
|
-
export declare function probeRestServer(config: McpUpstreamConfig, secret: string | null, fetchImpl?: RestFetch): Promise<ProbeResult>;
|
|
116
|
+
export declare function probeRestServer(config: McpUpstreamConfig, secret: string | null, fetchImpl?: RestFetch, lookupImpl?: RestLookup): Promise<ProbeResult>;
|
|
90
117
|
/**
|
|
91
118
|
* Build the one HTTP request a `rest` tool call makes, from the ALLOWLISTED arguments only, pinned
|
|
92
119
|
* to the base URL. Exported so the allowlist and the pin are testable without a network.
|
package/dist/mcp/rest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/mcp/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/mcp/rest.ts"],"names":[],"mappings":"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"}
|