@mcp-index/sdk 0.15.0 → 0.16.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.
@@ -4,11 +4,12 @@
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 { randomBytes } from "node:crypto";
8
+ import { chmodSync, closeSync, constants, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync, } from "node:fs";
8
9
  import { tmpdir, homedir } from "node:os";
9
10
  import { basename, dirname, join } from "node:path";
11
+ import { withExclusiveLock } from "./fileLock.js";
10
12
  import { mdText } from "./render.js";
11
- import { hashTool } from "./canonical.js";
12
13
  const PIN_STORE_VERSION = 2;
13
14
  const EVER_PINNED_NAME = ".ever-pinned.json";
14
15
  export var Decision;
@@ -126,19 +127,60 @@ function renderVerdictBody(v) {
126
127
  }
127
128
  return `HOLD ${sid}/${tool} — ${mdText(v.reason)}`;
128
129
  }
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). */
130
+ /** Pin store keyed by `(serverId, toolName)`. Stores ONLY hashes (+ optional
131
+ * PUBLIC schema). A path argument persists to JSON under a sibling flock so a
132
+ * Python CLI approval and another process cannot lose each other's writes. */
132
133
  export class PreflightPin {
133
134
  index = new Map();
134
135
  taintedReason = null;
135
136
  newerFormat = false;
137
+ diskSig = null;
136
138
  /** On-disk baseline, or null for an in-memory pin. */
137
139
  path;
138
140
  constructor(path) {
139
141
  this.path = path ?? null;
140
- if (this.path !== null)
141
- this.load();
142
+ if (this.path !== null) {
143
+ const st = this.lstatStore(this.path);
144
+ if (st === null) {
145
+ if (wasEverPinned(this.path)) {
146
+ this.taintedReason = "baseline file is missing but this server was pinned before";
147
+ }
148
+ }
149
+ else if (!st.isFile()) {
150
+ this.taintedReason = "baseline path is not a regular file";
151
+ }
152
+ else {
153
+ this.loadIntoIndex();
154
+ // An empty-but-valid store after we have pinned here is not a first run.
155
+ if (this.index.size === 0 &&
156
+ this.taintedReason === null &&
157
+ !this.newerFormat &&
158
+ wasEverPinned(this.path)) {
159
+ this.taintedReason =
160
+ "baseline file has no pins for a server that was pinned before";
161
+ }
162
+ this.diskSig = this.signature();
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Taint the store when it holds no pins for `serverId` but has before.
168
+ *
169
+ * The constructor check only sees the whole file. A valid store that holds
170
+ * another server's pins passes it, so the per-server check runs once the
171
+ * server id is known (the Gate calls this). An index written before server
172
+ * ids were recorded never taints here.
173
+ */
174
+ expectServer(serverId) {
175
+ if (this.path === null || this.taintedReason !== null || this.newerFormat)
176
+ return;
177
+ for (const pin of this.index.values()) {
178
+ if (pin.serverId === serverId)
179
+ return;
180
+ }
181
+ if (wasEverPinnedServer(this.path, serverId)) {
182
+ this.taintedReason = "baseline file has no pins for a server that was pinned before";
183
+ }
142
184
  }
143
185
  /** Closed reason when a baseline that should have been readable was not. */
144
186
  get tainted() {
@@ -155,34 +197,58 @@ export class PreflightPin {
155
197
  // only one is reviewable. Python's twin keys on a tuple and needs no separator at all.
156
198
  return `${serverId}\u001f${toolName}`;
157
199
  }
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;
200
+ lstatStore(path) {
170
201
  try {
171
- st = lstatSync(path);
202
+ const st = lstatSync(path);
203
+ return {
204
+ isFile: () => st.isFile(),
205
+ ino: Number(st.ino),
206
+ mtimeMs: Number(st.mtimeMs),
207
+ };
172
208
  }
173
209
  catch {
174
- st = null;
210
+ return null;
175
211
  }
176
- if (st === null) {
177
- if (wasEverPinned(path)) {
178
- this.taintedReason = "baseline file is missing but this server was pinned before";
179
- }
180
- return;
212
+ }
213
+ signature() {
214
+ if (this.path === null)
215
+ return null;
216
+ const st = this.lstatStore(this.path);
217
+ if (st === null || !st.isFile())
218
+ return null;
219
+ return { ino: st.ino, mtimeNs: Math.trunc(st.mtimeMs * 1_000_000) };
220
+ }
221
+ parsePin(row) {
222
+ const sid = row["server_id"];
223
+ const tname = row["tool_name"];
224
+ const dh = row["definition_hash"];
225
+ const pinnedAt = row["pinned_at"];
226
+ if (typeof sid !== "string" ||
227
+ typeof tname !== "string" ||
228
+ typeof dh !== "string" ||
229
+ typeof pinnedAt !== "string") {
230
+ return null;
181
231
  }
182
- if (!st.isFile()) {
183
- this.taintedReason = "baseline path is not a regular file";
232
+ const schema = row["schema"];
233
+ const via = row["via"];
234
+ const launchKey = row["launch_key"];
235
+ return {
236
+ serverId: sid,
237
+ toolName: tname,
238
+ definitionHash: dh,
239
+ pinnedAt,
240
+ schema: schema !== null && typeof schema === "object" && !Array.isArray(schema)
241
+ ? schema
242
+ : null,
243
+ via: typeof via === "string" && via.length > 0 ? via : "tofu",
244
+ classification: row["classification"],
245
+ launchKey: typeof launchKey === "string" && launchKey.length > 0 ? launchKey : undefined,
246
+ };
247
+ }
248
+ loadIntoIndex() {
249
+ const path = this.path;
250
+ if (path === null)
184
251
  return;
185
- }
186
252
  let raw;
187
253
  try {
188
254
  raw = JSON.parse(readFileSync(path, "utf8"));
@@ -211,38 +277,132 @@ export class PreflightPin {
211
277
  this.taintedReason = "baseline file contains an unreadable record";
212
278
  continue;
213
279
  }
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") {
280
+ const pin = this.parsePin(rec);
281
+ if (pin === null) {
223
282
  this.taintedReason = "baseline file contains an unreadable record";
224
283
  continue;
225
284
  }
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);
285
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
286
+ }
287
+ }
288
+ emptyStoreIsUnreadable(records, savedIndex) {
289
+ const ever = this.path !== null && wasEverPinned(this.path);
290
+ if (records.length === 0 && (ever || savedIndex.size > 0))
291
+ return true;
292
+ const serversMem = new Set();
293
+ for (const pin of savedIndex.values())
294
+ serversMem.add(pin.serverId);
295
+ if (serversMem.size === 0)
296
+ return false;
297
+ const serversDisk = new Set(records.map((p) => p.serverId));
298
+ for (const sid of serversMem) {
299
+ if (!serversDisk.has(sid))
300
+ return true;
301
+ }
302
+ return false;
303
+ }
304
+ recordsFromDisk() {
305
+ if (this.path === null)
306
+ return [];
307
+ const st = this.lstatStore(this.path);
308
+ if (st === null) {
309
+ if (wasEverPinned(this.path) || this.index.size > 0) {
310
+ this.taintedReason =
311
+ "baseline file is missing but this server was pinned before";
312
+ return null;
313
+ }
314
+ return [];
315
+ }
316
+ if (!st.isFile()) {
317
+ this.taintedReason = "baseline path is not a regular file";
318
+ return null;
240
319
  }
320
+ const savedIndex = this.index;
321
+ const savedTaint = this.taintedReason;
322
+ const savedUnsupported = this.newerFormat;
323
+ this.index = new Map();
324
+ this.taintedReason = null;
325
+ this.newerFormat = false;
326
+ this.loadIntoIndex();
327
+ if (this.newerFormat || this.taintedReason !== null) {
328
+ const loadTaint = this.taintedReason;
329
+ this.index = savedIndex;
330
+ this.taintedReason = loadTaint ?? savedTaint;
331
+ this.newerFormat = savedUnsupported || this.newerFormat;
332
+ return null;
333
+ }
334
+ const records = [...this.index.values()];
335
+ this.index = savedIndex;
336
+ this.taintedReason = savedTaint;
337
+ this.newerFormat = savedUnsupported;
338
+ if (this.emptyStoreIsUnreadable(records, savedIndex)) {
339
+ this.taintedReason =
340
+ "baseline file has no pins for a server that was pinned before";
341
+ return null;
342
+ }
343
+ return records;
344
+ }
345
+ reloadHoldingLock() {
346
+ if (this.path === null)
347
+ return;
348
+ const sig = this.signature();
349
+ if (sig !== null &&
350
+ this.diskSig !== null &&
351
+ sig.ino === this.diskSig.ino &&
352
+ sig.mtimeNs === this.diskSig.mtimeNs) {
353
+ return;
354
+ }
355
+ withExclusiveLock(this.path, () => {
356
+ const again = this.signature();
357
+ if (again !== null &&
358
+ this.diskSig !== null &&
359
+ again.ino === this.diskSig.ino &&
360
+ again.mtimeNs === this.diskSig.mtimeNs) {
361
+ return;
362
+ }
363
+ const records = this.recordsFromDisk();
364
+ if (records === null)
365
+ return;
366
+ this.index = new Map(records.map((p) => [this.key(p.serverId, p.toolName), p]));
367
+ this.diskSig = this.signature();
368
+ });
369
+ }
370
+ /** Reload when another process replaced the file. No-op for an in-memory pin. */
371
+ reloadIfChanged() {
372
+ this.reloadHoldingLock();
373
+ }
374
+ get(serverId, toolName) {
375
+ this.reloadHoldingLock();
376
+ return this.index.get(this.key(serverId, toolName)) ?? null;
377
+ }
378
+ put(pin) {
379
+ if (this.path === null) {
380
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
381
+ return;
382
+ }
383
+ if (this.taintedReason !== null) {
384
+ throw new Error("pin store is tainted");
385
+ }
386
+ withExclusiveLock(this.path, () => {
387
+ if (this.taintedReason !== null) {
388
+ throw new Error("pin store is tainted");
389
+ }
390
+ const records = this.recordsFromDisk();
391
+ if (records === null)
392
+ throw new Error("pin store is unreadable");
393
+ this.index = new Map(records.map((p) => [this.key(p.serverId, p.toolName), p]));
394
+ this.index.set(this.key(pin.serverId, pin.toolName), pin);
395
+ this.flush();
396
+ this.diskSig = this.signature();
397
+ });
241
398
  }
242
399
  flush() {
243
400
  const path = this.path;
244
401
  if (path === null)
245
402
  return;
403
+ if (this.taintedReason !== null) {
404
+ throw new Error("pin store is tainted");
405
+ }
246
406
  const pins = [...this.index.values()].map((p) => {
247
407
  const row = {
248
408
  server_id: p.serverId,
@@ -256,17 +416,26 @@ export class PreflightPin {
256
416
  row["via"] = p.via;
257
417
  if (p.classification !== undefined)
258
418
  row["classification"] = p.classification;
419
+ if (p.launchKey !== undefined && p.launchKey.length > 0)
420
+ row["launch_key"] = p.launchKey;
259
421
  return row;
260
422
  });
261
423
  const payload = { version: PIN_STORE_VERSION, pins };
262
424
  const directory = dirname(path) || ".";
263
425
  mkdirSync(directory, { recursive: true });
264
- const tmp = join(directory, `.${basename(path)}.${process.pid}.tmp`);
426
+ const suffix = randomBytes(8).toString("hex");
427
+ const tmp = join(directory, `.${basename(path)}.${process.pid}.${suffix}.tmp`);
265
428
  const encoded = Buffer.from(stableStringify(payload), "utf8");
266
- const fd = openSync(tmp, "w", 0o600);
429
+ let flags = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL;
430
+ if (typeof constants.O_NOFOLLOW === "number") {
431
+ flags |= constants.O_NOFOLLOW;
432
+ }
433
+ const fd = openSync(tmp, flags, 0o600);
267
434
  try {
268
435
  writeSync(fd, encoded);
436
+ fsyncSync(fd);
269
437
  closeSync(fd);
438
+ chmodSync(tmp, 0o600);
270
439
  renameSync(tmp, path);
271
440
  }
272
441
  catch (err) {
@@ -278,12 +447,14 @@ export class PreflightPin {
278
447
  }
279
448
  throw err;
280
449
  }
281
- recordEverPinned(path);
450
+ recordEverPinned(path, new Set([...this.index.values()].map((p) => p.serverId)));
282
451
  }
283
452
  toolsFor(serverId) {
453
+ this.reloadHoldingLock();
284
454
  return [...this.index.values()].filter((p) => p.serverId === serverId);
285
455
  }
286
456
  allPins() {
457
+ this.reloadHoldingLock();
287
458
  return [...this.index.values()];
288
459
  }
289
460
  }
@@ -317,44 +488,117 @@ function wasEverPinned(storePath) {
317
488
  return false;
318
489
  }
319
490
  }
320
- function recordEverPinned(storePath) {
491
+ function readEverPinned(indexPath) {
492
+ const out = { stores: [], servers: {} };
493
+ try {
494
+ const raw = JSON.parse(readFileSync(indexPath, "utf8"));
495
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
496
+ return out;
497
+ const stores = raw["stores"];
498
+ if (Array.isArray(stores))
499
+ out.stores = stores.filter((s) => typeof s === "string");
500
+ const servers = raw["servers"];
501
+ if (servers !== null && typeof servers === "object" && !Array.isArray(servers)) {
502
+ for (const [key, ids] of Object.entries(servers)) {
503
+ if (Array.isArray(ids))
504
+ out.servers[key] = ids.filter((i) => typeof i === "string");
505
+ }
506
+ }
507
+ }
508
+ catch {
509
+ // an absent or unreadable index is no evidence
510
+ }
511
+ return out;
512
+ }
513
+ /** True iff this store has held pins for `serverId`. Fails open like `wasEverPinned`. */
514
+ function wasEverPinnedServer(storePath, serverId) {
515
+ const { servers } = readEverPinned(everPinnedPath(storePath));
516
+ return (servers[basename(storePath)] ?? []).includes(serverId);
517
+ }
518
+ function writeEverPinnedStores(indexPath, stores, servers = {}) {
519
+ const directory = dirname(indexPath) || ".";
520
+ mkdirSync(directory, { recursive: true });
521
+ const suffix = randomBytes(8).toString("hex");
522
+ const tmp = join(directory, `.ever-pinned.${process.pid}.${suffix}.tmp`);
523
+ let flags = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL;
524
+ if (typeof constants.O_NOFOLLOW === "number") {
525
+ flags |= constants.O_NOFOLLOW;
526
+ }
527
+ const fd = openSync(tmp, flags, 0o600);
528
+ try {
529
+ const body = { stores: [...stores].sort() };
530
+ const keys = Object.keys(servers).filter((k) => servers[k].length > 0);
531
+ if (keys.length > 0) {
532
+ const sorted = {};
533
+ for (const key of keys.sort())
534
+ sorted[key] = [...new Set(servers[key])].sort();
535
+ body["servers"] = sorted;
536
+ }
537
+ writeSync(fd, Buffer.from(stableStringify(body), "utf8"));
538
+ fsyncSync(fd);
539
+ closeSync(fd);
540
+ chmodSync(tmp, 0o600);
541
+ renameSync(tmp, indexPath);
542
+ }
543
+ catch (err) {
544
+ try {
545
+ unlinkSync(tmp);
546
+ }
547
+ catch {
548
+ // already removed
549
+ }
550
+ throw err;
551
+ }
552
+ }
553
+ function recordEverPinned(storePath, serverIds = new Set()) {
554
+ const indexPath = everPinnedPath(storePath);
555
+ const name = basename(storePath);
556
+ try {
557
+ const { stores, servers } = readEverPinned(indexPath);
558
+ const known = new Set(servers[name] ?? []);
559
+ const wanted = new Set([...known, ...serverIds]);
560
+ if (stores.includes(name) && wanted.size === known.size)
561
+ return;
562
+ if (!stores.includes(name))
563
+ stores.push(name);
564
+ if (wanted.size > 0)
565
+ servers[name] = [...wanted].sort();
566
+ writeEverPinnedStores(indexPath, stores, servers);
567
+ }
568
+ catch {
569
+ return;
570
+ }
571
+ }
572
+ /** Remove ``storePath`` from the ever-pinned index. */
573
+ export function clearEverPinned(storePath) {
321
574
  const indexPath = everPinnedPath(storePath);
322
575
  const name = basename(storePath);
323
576
  try {
324
- let stores = [];
577
+ let raw;
325
578
  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
- }
579
+ raw = JSON.parse(readFileSync(indexPath, "utf8"));
332
580
  }
333
581
  catch {
334
- stores = [];
582
+ return;
335
583
  }
336
- if (stores.includes(name))
584
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
337
585
  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);
586
+ const found = raw["stores"];
587
+ if (!Array.isArray(found))
588
+ return;
589
+ const stores = found.filter((s) => typeof s === "string" && s !== name);
590
+ const { servers } = readEverPinned(indexPath);
591
+ delete servers[name];
592
+ if (stores.length > 0) {
593
+ writeEverPinnedStores(indexPath, stores, servers);
349
594
  }
350
- catch (err) {
595
+ else {
351
596
  try {
352
- unlinkSync(tmp);
597
+ unlinkSync(indexPath);
353
598
  }
354
599
  catch {
355
- // already removed
600
+ // best effort
356
601
  }
357
- throw err;
358
602
  }
359
603
  }
360
604
  catch {
@@ -383,5 +627,5 @@ export function defaultPinStorePath(serverId) {
383
627
  }
384
628
  return join(root, "pins", `${sanitizeServerId(serverId)}.json`);
385
629
  }
386
- export { hashTool };
630
+ export { hashTool, approvalDigest } from "./canonical.js";
387
631
  //# 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,20 @@ 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 calls the inner client and is not filtered. */
112
116
  export type Wrapped<T> = T & {
113
117
  repin(tool?: string): PinnedTool[];
118
+ approvePending(name: string, definitionHash: string): PinnedTool | null;
114
119
  validateBehaviorNow(toolName: string, verifier?: BehavioralVerifier): PreflightVerdict;
115
120
  holdBanner(verdict: PreflightVerdict): string;
116
121
  readonly __interceptor__: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/wrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/wrap.ts"],"names":[],"mappings":"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"}