@mcp-index/sdk 0.15.0 → 0.17.0

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +41 -2
  3. package/dist/src/canonical.d.ts +8 -0
  4. package/dist/src/canonical.d.ts.map +1 -1
  5. package/dist/src/canonical.js +57 -0
  6. package/dist/src/canonical.js.map +1 -1
  7. package/dist/src/contractFields.d.ts +42 -0
  8. package/dist/src/contractFields.d.ts.map +1 -0
  9. package/dist/src/contractFields.js +103 -0
  10. package/dist/src/contractFields.js.map +1 -0
  11. package/dist/src/fileLock.d.ts +20 -0
  12. package/dist/src/fileLock.d.ts.map +1 -0
  13. package/dist/src/fileLock.js +191 -0
  14. package/dist/src/fileLock.js.map +1 -0
  15. package/dist/src/gate.d.ts +28 -3
  16. package/dist/src/gate.d.ts.map +1 -1
  17. package/dist/src/gate.js +85 -3
  18. package/dist/src/gate.js.map +1 -1
  19. package/dist/src/index.d.ts +3 -1
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +2 -1
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/listingFilter.d.ts +6 -3
  24. package/dist/src/listingFilter.d.ts.map +1 -1
  25. package/dist/src/listingFilter.js +17 -6
  26. package/dist/src/listingFilter.js.map +1 -1
  27. package/dist/src/pendingStore.d.ts +53 -0
  28. package/dist/src/pendingStore.d.ts.map +1 -0
  29. package/dist/src/pendingStore.js +309 -0
  30. package/dist/src/pendingStore.js.map +1 -0
  31. package/dist/src/preflight.d.ts +37 -7
  32. package/dist/src/preflight.d.ts.map +1 -1
  33. package/dist/src/preflight.js +340 -83
  34. package/dist/src/preflight.js.map +1 -1
  35. package/dist/src/wrap.d.ts +13 -7
  36. package/dist/src/wrap.d.ts.map +1 -1
  37. package/dist/src/wrap.js +199 -14
  38. package/dist/src/wrap.js.map +1 -1
  39. package/package.json +1 -1
@@ -4,11 +4,13 @@
4
4
  * `PreflightVerdict`). The pin stores ONLY the public-contract hash (+ optional
5
5
  * PUBLIC schema for diff detail) — NEVER a token, by construction.
6
6
  */
7
- import { chmodSync, closeSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync } from "node:fs";
7
+ import { SCHEMA_MARKER_KEY } from "./contractFields.js";
8
+ import { randomBytes } from "node:crypto";
9
+ import { chmodSync, closeSync, constants, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync, } from "node:fs";
8
10
  import { tmpdir, homedir } from "node:os";
9
11
  import { basename, dirname, join } from "node:path";
12
+ import { withExclusiveLock } from "./fileLock.js";
10
13
  import { mdText } from "./render.js";
11
- import { hashTool } from "./canonical.js";
12
14
  const PIN_STORE_VERSION = 2;
13
15
  const EVER_PINNED_NAME = ".ever-pinned.json";
14
16
  export var Decision;
@@ -126,19 +128,60 @@ function renderVerdictBody(v) {
126
128
  }
127
129
  return `HOLD ${sid}/${tool} — ${mdText(v.reason)}`;
128
130
  }
129
- /** In-memory pin store (the TS port keeps it in-memory: the SDK wrapper pins a
130
- * live session; durable JSON persistence is out of scope for the wrapper). Keyed
131
- * by `(serverId, toolName)`. Stores ONLY hashes (+ optional PUBLIC schema). */
131
+ /** Pin store keyed by `(serverId, toolName)`. Stores ONLY hashes (+ optional
132
+ * PUBLIC schema). A path argument persists to JSON under a sibling flock so a
133
+ * Python CLI approval and another process cannot lose each other's writes. */
132
134
  export class PreflightPin {
133
135
  index = new Map();
134
136
  taintedReason = null;
135
137
  newerFormat = false;
138
+ diskSig = null;
136
139
  /** On-disk baseline, or null for an in-memory pin. */
137
140
  path;
138
141
  constructor(path) {
139
142
  this.path = path ?? null;
140
- if (this.path !== null)
141
- this.load();
143
+ if (this.path !== null) {
144
+ const st = this.lstatStore(this.path);
145
+ if (st === null) {
146
+ if (wasEverPinned(this.path)) {
147
+ this.taintedReason = "baseline file is missing but this server was pinned before";
148
+ }
149
+ }
150
+ else if (!st.isFile()) {
151
+ this.taintedReason = "baseline path is not a regular file";
152
+ }
153
+ else {
154
+ this.loadIntoIndex();
155
+ // An empty-but-valid store after we have pinned here is not a first run.
156
+ if (this.index.size === 0 &&
157
+ this.taintedReason === null &&
158
+ !this.newerFormat &&
159
+ wasEverPinned(this.path)) {
160
+ this.taintedReason =
161
+ "baseline file has no pins for a server that was pinned before";
162
+ }
163
+ this.diskSig = this.signature();
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * Taint the store when it holds no pins for `serverId` but has before.
169
+ *
170
+ * The constructor check only sees the whole file. A valid store that holds
171
+ * another server's pins passes it, so the per-server check runs once the
172
+ * server id is known (the Gate calls this). An index written before server
173
+ * ids were recorded never taints here.
174
+ */
175
+ expectServer(serverId) {
176
+ if (this.path === null || this.taintedReason !== null || this.newerFormat)
177
+ return;
178
+ for (const pin of this.index.values()) {
179
+ if (pin.serverId === serverId)
180
+ return;
181
+ }
182
+ if (wasEverPinnedServer(this.path, serverId)) {
183
+ this.taintedReason = "baseline file has no pins for a server that was pinned before";
184
+ }
142
185
  }
143
186
  /** Closed reason when a baseline that should have been readable was not. */
144
187
  get tainted() {
@@ -155,34 +198,67 @@ export class PreflightPin {
155
198
  // only one is reviewable. Python's twin keys on a tuple and needs no separator at all.
156
199
  return `${serverId}\u001f${toolName}`;
157
200
  }
158
- get(serverId, toolName) {
159
- return this.index.get(this.key(serverId, toolName)) ?? null;
160
- }
161
- put(pin) {
162
- this.index.set(this.key(pin.serverId, pin.toolName), pin);
163
- this.flush();
164
- }
165
- load() {
166
- const path = this.path;
167
- if (path === null)
168
- return;
169
- let st = null;
201
+ lstatStore(path) {
170
202
  try {
171
- st = lstatSync(path);
203
+ const st = lstatSync(path);
204
+ return {
205
+ isFile: () => st.isFile(),
206
+ ino: Number(st.ino),
207
+ mtimeMs: Number(st.mtimeMs),
208
+ };
172
209
  }
173
210
  catch {
174
- st = null;
211
+ return null;
175
212
  }
176
- if (st === null) {
177
- if (wasEverPinned(path)) {
178
- this.taintedReason = "baseline file is missing but this server was pinned before";
179
- }
180
- return;
213
+ }
214
+ signature() {
215
+ if (this.path === null)
216
+ return null;
217
+ const st = this.lstatStore(this.path);
218
+ if (st === null || !st.isFile())
219
+ return null;
220
+ return { ino: st.ino, mtimeNs: Math.trunc(st.mtimeMs * 1_000_000) };
221
+ }
222
+ parsePin(row) {
223
+ const sid = row["server_id"];
224
+ const tname = row["tool_name"];
225
+ const dh = row["definition_hash"];
226
+ const pinnedAt = row["pinned_at"];
227
+ if (typeof sid !== "string" ||
228
+ typeof tname !== "string" ||
229
+ typeof dh !== "string" ||
230
+ typeof pinnedAt !== "string") {
231
+ return null;
181
232
  }
182
- if (!st.isFile()) {
183
- this.taintedReason = "baseline path is not a regular file";
184
- return;
233
+ const schema = row["schema"];
234
+ const via = row["via"];
235
+ const launchKey = row["launch_key"];
236
+ let fieldsV = row["contract_fields"];
237
+ let schemaIn = schema;
238
+ if (schema !== null && typeof schema === "object" && !Array.isArray(schema) && SCHEMA_MARKER_KEY in schema) {
239
+ const copy = { ...schema };
240
+ fieldsV = copy[SCHEMA_MARKER_KEY];
241
+ delete copy[SCHEMA_MARKER_KEY];
242
+ schemaIn = copy;
185
243
  }
244
+ return {
245
+ serverId: sid,
246
+ toolName: tname,
247
+ definitionHash: dh,
248
+ pinnedAt,
249
+ schema: schemaIn !== null && typeof schemaIn === "object" && !Array.isArray(schemaIn)
250
+ ? schemaIn
251
+ : null,
252
+ via: typeof via === "string" && via.length > 0 ? via : "tofu",
253
+ classification: row["classification"],
254
+ launchKey: typeof launchKey === "string" && launchKey.length > 0 ? launchKey : undefined,
255
+ contractFields: Number.isInteger(fieldsV) ? fieldsV : undefined,
256
+ };
257
+ }
258
+ loadIntoIndex() {
259
+ const path = this.path;
260
+ if (path === null)
261
+ return;
186
262
  let raw;
187
263
  try {
188
264
  raw = JSON.parse(readFileSync(path, "utf8"));
@@ -211,38 +287,132 @@ export class PreflightPin {
211
287
  this.taintedReason = "baseline file contains an unreadable record";
212
288
  continue;
213
289
  }
214
- const row = rec;
215
- const sid = row["server_id"];
216
- const tname = row["tool_name"];
217
- const dh = row["definition_hash"];
218
- const pinnedAt = row["pinned_at"];
219
- if (typeof sid !== "string" ||
220
- typeof tname !== "string" ||
221
- typeof dh !== "string" ||
222
- typeof pinnedAt !== "string") {
290
+ const pin = this.parsePin(rec);
291
+ if (pin === null) {
223
292
  this.taintedReason = "baseline file contains an unreadable record";
224
293
  continue;
225
294
  }
226
- const schema = row["schema"];
227
- const via = row["via"];
228
- const pin = {
229
- serverId: sid,
230
- toolName: tname,
231
- definitionHash: dh,
232
- pinnedAt,
233
- schema: schema !== null && typeof schema === "object" && !Array.isArray(schema)
234
- ? schema
235
- : null,
236
- via: typeof via === "string" && via.length > 0 ? via : "tofu",
237
- classification: row["classification"],
238
- };
239
- this.index.set(this.key(sid, tname), pin);
295
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
240
296
  }
241
297
  }
298
+ emptyStoreIsUnreadable(records, savedIndex) {
299
+ const ever = this.path !== null && wasEverPinned(this.path);
300
+ if (records.length === 0 && (ever || savedIndex.size > 0))
301
+ return true;
302
+ const serversMem = new Set();
303
+ for (const pin of savedIndex.values())
304
+ serversMem.add(pin.serverId);
305
+ if (serversMem.size === 0)
306
+ return false;
307
+ const serversDisk = new Set(records.map((p) => p.serverId));
308
+ for (const sid of serversMem) {
309
+ if (!serversDisk.has(sid))
310
+ return true;
311
+ }
312
+ return false;
313
+ }
314
+ recordsFromDisk() {
315
+ if (this.path === null)
316
+ return [];
317
+ const st = this.lstatStore(this.path);
318
+ if (st === null) {
319
+ if (wasEverPinned(this.path) || this.index.size > 0) {
320
+ this.taintedReason =
321
+ "baseline file is missing but this server was pinned before";
322
+ return null;
323
+ }
324
+ return [];
325
+ }
326
+ if (!st.isFile()) {
327
+ this.taintedReason = "baseline path is not a regular file";
328
+ return null;
329
+ }
330
+ const savedIndex = this.index;
331
+ const savedTaint = this.taintedReason;
332
+ const savedUnsupported = this.newerFormat;
333
+ this.index = new Map();
334
+ this.taintedReason = null;
335
+ this.newerFormat = false;
336
+ this.loadIntoIndex();
337
+ if (this.newerFormat || this.taintedReason !== null) {
338
+ const loadTaint = this.taintedReason;
339
+ this.index = savedIndex;
340
+ this.taintedReason = loadTaint ?? savedTaint;
341
+ this.newerFormat = savedUnsupported || this.newerFormat;
342
+ return null;
343
+ }
344
+ const records = [...this.index.values()];
345
+ this.index = savedIndex;
346
+ this.taintedReason = savedTaint;
347
+ this.newerFormat = savedUnsupported;
348
+ if (this.emptyStoreIsUnreadable(records, savedIndex)) {
349
+ this.taintedReason =
350
+ "baseline file has no pins for a server that was pinned before";
351
+ return null;
352
+ }
353
+ return records;
354
+ }
355
+ reloadHoldingLock() {
356
+ if (this.path === null)
357
+ return;
358
+ const sig = this.signature();
359
+ if (sig !== null &&
360
+ this.diskSig !== null &&
361
+ sig.ino === this.diskSig.ino &&
362
+ sig.mtimeNs === this.diskSig.mtimeNs) {
363
+ return;
364
+ }
365
+ withExclusiveLock(this.path, () => {
366
+ const again = this.signature();
367
+ if (again !== null &&
368
+ this.diskSig !== null &&
369
+ again.ino === this.diskSig.ino &&
370
+ again.mtimeNs === this.diskSig.mtimeNs) {
371
+ return;
372
+ }
373
+ const records = this.recordsFromDisk();
374
+ if (records === null)
375
+ return;
376
+ this.index = new Map(records.map((p) => [this.key(p.serverId, p.toolName), p]));
377
+ this.diskSig = this.signature();
378
+ });
379
+ }
380
+ /** Reload when another process replaced the file. No-op for an in-memory pin. */
381
+ reloadIfChanged() {
382
+ this.reloadHoldingLock();
383
+ }
384
+ get(serverId, toolName) {
385
+ this.reloadHoldingLock();
386
+ return this.index.get(this.key(serverId, toolName)) ?? null;
387
+ }
388
+ put(pin) {
389
+ if (this.path === null) {
390
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
391
+ return;
392
+ }
393
+ if (this.taintedReason !== null) {
394
+ throw new Error("pin store is tainted");
395
+ }
396
+ withExclusiveLock(this.path, () => {
397
+ if (this.taintedReason !== null) {
398
+ throw new Error("pin store is tainted");
399
+ }
400
+ const records = this.recordsFromDisk();
401
+ if (records === null)
402
+ throw new Error("pin store is unreadable");
403
+ this.index = new Map(records.map((p) => [this.key(p.serverId, p.toolName), p]));
404
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
405
+ this.flush();
406
+ this.diskSig = this.signature();
407
+ });
408
+ }
242
409
  flush() {
243
410
  const path = this.path;
244
411
  if (path === null)
245
412
  return;
413
+ if (this.taintedReason !== null) {
414
+ throw new Error("pin store is tainted");
415
+ }
246
416
  const pins = [...this.index.values()].map((p) => {
247
417
  const row = {
248
418
  server_id: p.serverId,
@@ -250,23 +420,35 @@ export class PreflightPin {
250
420
  definition_hash: p.definitionHash,
251
421
  pinned_at: p.pinnedAt,
252
422
  };
253
- if (p.schema !== null)
254
- row["schema"] = p.schema;
423
+ if (p.schema !== null) {
424
+ // The contract_fields marker rides inside schema (see SCHEMA_MARKER_KEY).
425
+ row["schema"] =
426
+ p.contractFields !== undefined ? { ...p.schema, [SCHEMA_MARKER_KEY]: p.contractFields } : p.schema;
427
+ }
255
428
  if (p.via !== undefined && p.via !== "tofu")
256
429
  row["via"] = p.via;
257
430
  if (p.classification !== undefined)
258
431
  row["classification"] = p.classification;
432
+ if (p.launchKey !== undefined && p.launchKey.length > 0)
433
+ row["launch_key"] = p.launchKey;
259
434
  return row;
260
435
  });
261
436
  const payload = { version: PIN_STORE_VERSION, pins };
262
437
  const directory = dirname(path) || ".";
263
438
  mkdirSync(directory, { recursive: true });
264
- const tmp = join(directory, `.${basename(path)}.${process.pid}.tmp`);
439
+ const suffix = randomBytes(8).toString("hex");
440
+ const tmp = join(directory, `.${basename(path)}.${process.pid}.${suffix}.tmp`);
265
441
  const encoded = Buffer.from(stableStringify(payload), "utf8");
266
- const fd = openSync(tmp, "w", 0o600);
442
+ let flags = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL;
443
+ if (typeof constants.O_NOFOLLOW === "number") {
444
+ flags |= constants.O_NOFOLLOW;
445
+ }
446
+ const fd = openSync(tmp, flags, 0o600);
267
447
  try {
268
448
  writeSync(fd, encoded);
449
+ fsyncSync(fd);
269
450
  closeSync(fd);
451
+ chmodSync(tmp, 0o600);
270
452
  renameSync(tmp, path);
271
453
  }
272
454
  catch (err) {
@@ -278,12 +460,14 @@ export class PreflightPin {
278
460
  }
279
461
  throw err;
280
462
  }
281
- recordEverPinned(path);
463
+ recordEverPinned(path, new Set([...this.index.values()].map((p) => p.serverId)));
282
464
  }
283
465
  toolsFor(serverId) {
466
+ this.reloadHoldingLock();
284
467
  return [...this.index.values()].filter((p) => p.serverId === serverId);
285
468
  }
286
469
  allPins() {
470
+ this.reloadHoldingLock();
287
471
  return [...this.index.values()];
288
472
  }
289
473
  }
@@ -317,44 +501,117 @@ function wasEverPinned(storePath) {
317
501
  return false;
318
502
  }
319
503
  }
320
- function recordEverPinned(storePath) {
504
+ function readEverPinned(indexPath) {
505
+ const out = { stores: [], servers: {} };
506
+ try {
507
+ const raw = JSON.parse(readFileSync(indexPath, "utf8"));
508
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
509
+ return out;
510
+ const stores = raw["stores"];
511
+ if (Array.isArray(stores))
512
+ out.stores = stores.filter((s) => typeof s === "string");
513
+ const servers = raw["servers"];
514
+ if (servers !== null && typeof servers === "object" && !Array.isArray(servers)) {
515
+ for (const [key, ids] of Object.entries(servers)) {
516
+ if (Array.isArray(ids))
517
+ out.servers[key] = ids.filter((i) => typeof i === "string");
518
+ }
519
+ }
520
+ }
521
+ catch {
522
+ // an absent or unreadable index is no evidence
523
+ }
524
+ return out;
525
+ }
526
+ /** True iff this store has held pins for `serverId`. Fails open like `wasEverPinned`. */
527
+ function wasEverPinnedServer(storePath, serverId) {
528
+ const { servers } = readEverPinned(everPinnedPath(storePath));
529
+ return (servers[basename(storePath)] ?? []).includes(serverId);
530
+ }
531
+ function writeEverPinnedStores(indexPath, stores, servers = {}) {
532
+ const directory = dirname(indexPath) || ".";
533
+ mkdirSync(directory, { recursive: true });
534
+ const suffix = randomBytes(8).toString("hex");
535
+ const tmp = join(directory, `.ever-pinned.${process.pid}.${suffix}.tmp`);
536
+ let flags = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL;
537
+ if (typeof constants.O_NOFOLLOW === "number") {
538
+ flags |= constants.O_NOFOLLOW;
539
+ }
540
+ const fd = openSync(tmp, flags, 0o600);
541
+ try {
542
+ const body = { stores: [...stores].sort() };
543
+ const keys = Object.keys(servers).filter((k) => servers[k].length > 0);
544
+ if (keys.length > 0) {
545
+ const sorted = {};
546
+ for (const key of keys.sort())
547
+ sorted[key] = [...new Set(servers[key])].sort();
548
+ body["servers"] = sorted;
549
+ }
550
+ writeSync(fd, Buffer.from(stableStringify(body), "utf8"));
551
+ fsyncSync(fd);
552
+ closeSync(fd);
553
+ chmodSync(tmp, 0o600);
554
+ renameSync(tmp, indexPath);
555
+ }
556
+ catch (err) {
557
+ try {
558
+ unlinkSync(tmp);
559
+ }
560
+ catch {
561
+ // already removed
562
+ }
563
+ throw err;
564
+ }
565
+ }
566
+ function recordEverPinned(storePath, serverIds = new Set()) {
567
+ const indexPath = everPinnedPath(storePath);
568
+ const name = basename(storePath);
569
+ try {
570
+ const { stores, servers } = readEverPinned(indexPath);
571
+ const known = new Set(servers[name] ?? []);
572
+ const wanted = new Set([...known, ...serverIds]);
573
+ if (stores.includes(name) && wanted.size === known.size)
574
+ return;
575
+ if (!stores.includes(name))
576
+ stores.push(name);
577
+ if (wanted.size > 0)
578
+ servers[name] = [...wanted].sort();
579
+ writeEverPinnedStores(indexPath, stores, servers);
580
+ }
581
+ catch {
582
+ return;
583
+ }
584
+ }
585
+ /** Remove ``storePath`` from the ever-pinned index. */
586
+ export function clearEverPinned(storePath) {
321
587
  const indexPath = everPinnedPath(storePath);
322
588
  const name = basename(storePath);
323
589
  try {
324
- let stores = [];
590
+ let raw;
325
591
  try {
326
- const raw = JSON.parse(readFileSync(indexPath, "utf8"));
327
- if (raw !== null && typeof raw === "object" && !Array.isArray(raw)) {
328
- const found = raw["stores"];
329
- if (Array.isArray(found))
330
- stores = found.filter((s) => typeof s === "string");
331
- }
592
+ raw = JSON.parse(readFileSync(indexPath, "utf8"));
332
593
  }
333
594
  catch {
334
- stores = [];
595
+ return;
335
596
  }
336
- if (stores.includes(name))
597
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
337
598
  return;
338
- stores.push(name);
339
- const directory = dirname(indexPath) || ".";
340
- mkdirSync(directory, { recursive: true });
341
- const tmp = join(directory, `.ever-pinned.${process.pid}.tmp`);
342
- const fd = openSync(tmp, "w", 0o600);
343
- try {
344
- writeSync(fd, Buffer.from(stableStringify({ stores: [...stores].sort() }), "utf8"));
345
- fsyncSync(fd);
346
- closeSync(fd);
347
- chmodSync(tmp, 0o600);
348
- renameSync(tmp, indexPath);
599
+ const found = raw["stores"];
600
+ if (!Array.isArray(found))
601
+ return;
602
+ const stores = found.filter((s) => typeof s === "string" && s !== name);
603
+ const { servers } = readEverPinned(indexPath);
604
+ delete servers[name];
605
+ if (stores.length > 0) {
606
+ writeEverPinnedStores(indexPath, stores, servers);
349
607
  }
350
- catch (err) {
608
+ else {
351
609
  try {
352
- unlinkSync(tmp);
610
+ unlinkSync(indexPath);
353
611
  }
354
612
  catch {
355
- // already removed
613
+ // best effort
356
614
  }
357
- throw err;
358
615
  }
359
616
  }
360
617
  catch {
@@ -383,5 +640,5 @@ export function defaultPinStorePath(serverId) {
383
640
  }
384
641
  return join(root, "pins", `${sanitizeServerId(serverId)}.json`);
385
642
  }
386
- export { hashTool };
643
+ export { hashTool, approvalDigest } from "./canonical.js";
387
644
  //# sourceMappingURL=preflight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,10 @@
5
5
  * `wrap(session)` returns a transparent JS `Proxy` over the real
6
6
  * `@modelcontextprotocol/sdk` `Client`: every method/prop passes through the
7
7
  * get-trap UNTOUCHED, EXCEPT the three gated seams:
8
- * - `listTools` — TOFU-pin every observed tool's PUBLIC contract.
9
- * - `callTool` — run the shared Gate before delegating; HOLD on drift.
10
- * - `request` — the low-level RPC chokepoint (the TS analog of Python's
8
+ * - `listTools` - pin first-seen tools; under guard/strict a new tool on an
9
+ * already-pinned server is left out until reviewed.
10
+ * - `callTool` - run the shared Gate before delegating; HOLD on drift.
11
+ * - `request` - the low-level RPC chokepoint (the TS analog of Python's
11
12
  * `send_request`). `callTool` is sugar over `request({method:'tools/call'})`,
12
13
  * so a caller can invoke any tool straight through `request`; we gate a
13
14
  * `tools/call` there too, or the pre-flight check is a paper wall.
@@ -76,6 +77,8 @@ export interface WrapOptions {
76
77
  verifier?: BehavioralVerifier | null;
77
78
  autoValidateBehavior?: boolean;
78
79
  posture?: Posture;
80
+ /** ``review`` (default) holds a new tool on an already-pinned server. ``tofu`` pins it. */
81
+ newTools?: "review" | "tofu";
79
82
  stats?: LocalStats | null;
80
83
  outcomes?: OutcomeStore | null;
81
84
  errors?: ErrorStore | null;
@@ -99,18 +102,21 @@ export interface WrapOptions {
99
102
  * delegated UNTOUCHED. NO credential is read, stored, or transmitted.
100
103
  *
101
104
  * `T` is the wrapped session type (e.g. the SDK `Client`); the return type adds
102
- * the wrapper's management methods (`repin` / `validateBehaviorNow` /
103
- * `holdBanner`).
105
+ * the wrapper's management methods (`repin` / `approvePending` /
106
+ * `validateBehaviorNow` / `holdBanner`).
104
107
  *
105
108
  * `opts` is OPTIONAL. `wrap(session)` keeps pins in a file under the state
106
109
  * directory (see `defaultPinStorePath`) and HOLDs on drift. Pass
107
110
  * `{ pinStore: "memory" }` for an in-process store, or `{ pin, serverId }` to
108
111
  * supply the store. Pass `{ scanResults, onHold, onWithheld, posture }` to tune
109
112
  * the gate. Under guard and strict, `listTools` leaves out a tool whose
110
- * description or input-schema text changed. The SDK client's listChanged
111
- * refresh calls the inner client and is not filtered. */
113
+ * description or input-schema text changed, and a new tool on an already-pinned
114
+ * server until it is reviewed (`approvePending` or the upgrade CLI). The SDK
115
+ * client's listChanged refresh goes through the same filter, and calls hold
116
+ * after a list_changed until the list is read again. */
112
117
  export type Wrapped<T> = T & {
113
118
  repin(tool?: string): PinnedTool[];
119
+ approvePending(name: string, definitionHash: string): PinnedTool | null;
114
120
  validateBehaviorNow(toolName: string, verifier?: BehavioralVerifier): PreflightVerdict;
115
121
  holdBanner(verdict: PreflightVerdict): string;
116
122
  readonly __interceptor__: unknown;