@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.
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Tools held for review, on disk under the gate state directory.
3
+ *
4
+ * Same file shape and lock as Python ``tooling.cse.pending_store`` so the
5
+ * Python CLI and this SDK share one pending list. Approval tokens are the
6
+ * full-contract ``approvalDigest``; a later list with a different digest is
7
+ * kept alongside the first rather than overwriting it.
8
+ */
9
+ import { randomBytes } from "node:crypto";
10
+ import { chmodSync, closeSync, constants, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync, } from "node:fs";
11
+ import { tmpdir, homedir } from "node:os";
12
+ import { basename, dirname, join } from "node:path";
13
+ import { withExclusiveLock } from "./fileLock.js";
14
+ import { approvalDigest, hashTool } from "./canonical.js";
15
+ import { PreflightPin, clearEverPinned, defaultPinStorePath, utcNowIso, } from "./preflight.js";
16
+ export const CLASS_CHANGED = "changed-without-upgrade";
17
+ export const CLASS_FLOATING = "floating";
18
+ const PENDING_VERSION = 1;
19
+ export const PER_SERVER_CAP = 64;
20
+ export const TOTAL_CAP = 512;
21
+ const NAME = "pending.json";
22
+ export function pendingPath(stateDirectory) {
23
+ return join(stateDirectory, NAME);
24
+ }
25
+ /** State directory for pending.json. Mirrors ``defaultPinStorePath`` root. */
26
+ export function defaultStateDir() {
27
+ const fromEnv = process.env.MCPINDEX_STATE_DIR;
28
+ if (typeof fromEnv === "string" && fromEnv.trim().length > 0)
29
+ return fromEnv;
30
+ if (process.execArgv.includes("--test") || process.argv.includes("--test")) {
31
+ return join(tmpdir(), "mcpindex-sdk-test", String(process.pid));
32
+ }
33
+ return join(homedir(), ".mcpindex");
34
+ }
35
+ export function pendingClass(prior) {
36
+ const keys = prior.map((pin) => pin.launchKey).filter((k) => typeof k === "string" && k.length > 0);
37
+ if (prior.length > 0 && keys.length === prior.length && new Set(keys).size === 1) {
38
+ return CLASS_CHANGED;
39
+ }
40
+ return CLASS_FLOATING;
41
+ }
42
+ function parseRecord(row) {
43
+ if (row === null || typeof row !== "object" || Array.isArray(row))
44
+ return null;
45
+ const body = row;
46
+ const server = body["server_id"];
47
+ const tool = body["tool_name"];
48
+ const definition = body["definition"];
49
+ const digest = body["definition_hash"];
50
+ const klass = body["class"];
51
+ const seen = body["first_seen"];
52
+ if (typeof server !== "string" ||
53
+ !server ||
54
+ typeof tool !== "string" ||
55
+ !tool ||
56
+ definition === null ||
57
+ typeof definition !== "object" ||
58
+ Array.isArray(definition) ||
59
+ typeof digest !== "string" ||
60
+ !digest ||
61
+ (klass !== CLASS_CHANGED && klass !== CLASS_FLOATING) ||
62
+ typeof seen !== "string" ||
63
+ !seen) {
64
+ return null;
65
+ }
66
+ const key = body["launch_key"];
67
+ return {
68
+ serverId: server,
69
+ toolName: tool,
70
+ definition: definition,
71
+ definitionHash: digest,
72
+ pendingClass: klass,
73
+ firstSeen: seen,
74
+ launchKey: typeof key === "string" && key.length > 0 ? key : undefined,
75
+ };
76
+ }
77
+ function loadUnlocked(path) {
78
+ try {
79
+ const raw = JSON.parse(readFileSync(path, "utf8"));
80
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
81
+ return [];
82
+ const rows = raw["records"];
83
+ if (!Array.isArray(rows))
84
+ return [];
85
+ const out = [];
86
+ for (const row of rows) {
87
+ const rec = parseRecord(row);
88
+ if (rec !== null)
89
+ out.push(rec);
90
+ }
91
+ return out;
92
+ }
93
+ catch {
94
+ return [];
95
+ }
96
+ }
97
+ function stableStringify(value) {
98
+ return JSON.stringify(sortKeys(value), null, 2) + "\n";
99
+ }
100
+ function sortKeys(value) {
101
+ if (Array.isArray(value))
102
+ return value.map(sortKeys);
103
+ if (value !== null && typeof value === "object") {
104
+ const out = {};
105
+ for (const key of Object.keys(value).sort()) {
106
+ out[key] = sortKeys(value[key]);
107
+ }
108
+ return out;
109
+ }
110
+ return value;
111
+ }
112
+ function dumpUnlocked(path, records) {
113
+ const payload = {
114
+ version: PENDING_VERSION,
115
+ records: records.map((rec) => {
116
+ const row = {
117
+ server_id: rec.serverId,
118
+ tool_name: rec.toolName,
119
+ definition: rec.definition,
120
+ definition_hash: rec.definitionHash,
121
+ class: rec.pendingClass,
122
+ first_seen: rec.firstSeen,
123
+ };
124
+ if (rec.launchKey)
125
+ row["launch_key"] = rec.launchKey;
126
+ return row;
127
+ }),
128
+ };
129
+ const directory = dirname(path) || ".";
130
+ mkdirSync(directory, { recursive: true });
131
+ const suffix = randomBytes(8).toString("hex");
132
+ const tmp = join(directory, `.pending.${process.pid}.${suffix}.tmp`);
133
+ let flags = constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL;
134
+ if (typeof constants.O_NOFOLLOW === "number") {
135
+ flags |= constants.O_NOFOLLOW;
136
+ }
137
+ const fd = openSync(tmp, flags, 0o600);
138
+ try {
139
+ writeSync(fd, Buffer.from(stableStringify(payload), "utf8"));
140
+ fsyncSync(fd);
141
+ closeSync(fd);
142
+ chmodSync(tmp, 0o600);
143
+ renameSync(tmp, path);
144
+ }
145
+ catch (err) {
146
+ try {
147
+ unlinkSync(tmp);
148
+ }
149
+ catch {
150
+ // already removed
151
+ }
152
+ throw err;
153
+ }
154
+ }
155
+ function cap(records) {
156
+ const ordered = [...records].sort((a, b) => {
157
+ if (a.firstSeen !== b.firstSeen)
158
+ return a.firstSeen < b.firstSeen ? -1 : 1;
159
+ if (a.serverId !== b.serverId)
160
+ return a.serverId < b.serverId ? -1 : 1;
161
+ return a.toolName < b.toolName ? -1 : a.toolName > b.toolName ? 1 : 0;
162
+ });
163
+ while (ordered.length > TOTAL_CAP)
164
+ ordered.shift();
165
+ const counts = new Map();
166
+ for (const rec of ordered)
167
+ counts.set(rec.serverId, (counts.get(rec.serverId) ?? 0) + 1);
168
+ while ([...counts.values()].some((n) => n > PER_SERVER_CAP)) {
169
+ for (let i = 0; i < ordered.length; i++) {
170
+ const rec = ordered[i];
171
+ if ((counts.get(rec.serverId) ?? 0) > PER_SERVER_CAP) {
172
+ counts.set(rec.serverId, (counts.get(rec.serverId) ?? 1) - 1);
173
+ ordered.splice(i, 1);
174
+ break;
175
+ }
176
+ }
177
+ }
178
+ return ordered;
179
+ }
180
+ export function recordPending(path, args) {
181
+ if (args.pendingClass !== CLASS_CHANGED && args.pendingClass !== CLASS_FLOATING)
182
+ return;
183
+ if (!args.definitionHash)
184
+ return;
185
+ withExclusiveLock(path, () => {
186
+ const rows = loadUnlocked(path);
187
+ const kept = [];
188
+ let firstSeen = utcNowIso();
189
+ for (const rec of rows) {
190
+ if (rec.serverId === args.serverId &&
191
+ rec.toolName === args.toolName &&
192
+ rec.definitionHash === args.definitionHash) {
193
+ firstSeen = rec.firstSeen;
194
+ continue;
195
+ }
196
+ kept.push(rec);
197
+ }
198
+ kept.push({
199
+ serverId: args.serverId,
200
+ toolName: args.toolName,
201
+ definition: args.definition,
202
+ definitionHash: args.definitionHash,
203
+ pendingClass: args.pendingClass,
204
+ firstSeen,
205
+ launchKey: args.launchKey,
206
+ });
207
+ dumpUnlocked(path, cap(kept));
208
+ });
209
+ }
210
+ export function loadPending(path) {
211
+ try {
212
+ readFileSync(path);
213
+ }
214
+ catch {
215
+ return [];
216
+ }
217
+ return withExclusiveLock(path, () => loadUnlocked(path));
218
+ }
219
+ function pinRecord(pin, rec) {
220
+ try {
221
+ if (approvalDigest(rec.definition) !== rec.definitionHash) {
222
+ return null;
223
+ }
224
+ }
225
+ catch {
226
+ return null;
227
+ }
228
+ let pinHash;
229
+ try {
230
+ pinHash = hashTool(rec.definition);
231
+ }
232
+ catch {
233
+ return null;
234
+ }
235
+ const written = {
236
+ serverId: rec.serverId,
237
+ toolName: rec.toolName,
238
+ definitionHash: pinHash,
239
+ pinnedAt: utcNowIso(),
240
+ schema: rec.definition,
241
+ via: "approve",
242
+ launchKey: rec.launchKey,
243
+ };
244
+ pin.put(written);
245
+ return written;
246
+ }
247
+ export function approveOne(pin, path, serverId, toolName, definitionHash, opts) {
248
+ const match = withExclusiveLock(path, () => {
249
+ for (const rec of loadUnlocked(path)) {
250
+ if (rec.serverId === serverId &&
251
+ rec.toolName === toolName &&
252
+ rec.definitionHash === definitionHash) {
253
+ if (opts?.floatingOnly && rec.pendingClass !== CLASS_FLOATING)
254
+ return null;
255
+ return rec;
256
+ }
257
+ }
258
+ return null;
259
+ });
260
+ if (match === null)
261
+ return null;
262
+ const written = pinRecord(pin, match);
263
+ if (written === null)
264
+ return null;
265
+ withExclusiveLock(path, () => {
266
+ const remain = loadUnlocked(path).filter((rec) => !(rec.serverId === serverId &&
267
+ rec.toolName === toolName &&
268
+ rec.definitionHash === definitionHash));
269
+ dumpUnlocked(path, remain);
270
+ });
271
+ return written;
272
+ }
273
+ /** Basename helper kept for tests that inspect the pending file name. */
274
+ export function pendingFileName() {
275
+ return basename(NAME);
276
+ }
277
+ /**
278
+ * Delete one server's pin store and its ever-pinned record, and drop its
279
+ * pending rows. The next tools/list pins from the current contract.
280
+ */
281
+ export function resetPins(serverId, opts) {
282
+ const path = opts?.path ?? defaultPinStorePath(serverId);
283
+ const before = new PreflightPin(path);
284
+ const pinCount = before.toolsFor(serverId).length;
285
+ const tainted = before.tainted;
286
+ withExclusiveLock(path, () => {
287
+ try {
288
+ unlinkSync(path);
289
+ }
290
+ catch {
291
+ // absent is fine
292
+ }
293
+ clearEverPinned(path);
294
+ });
295
+ const pending = pendingPath(defaultStateDir());
296
+ try {
297
+ withExclusiveLock(pending, () => {
298
+ const remain = loadUnlocked(pending).filter((rec) => rec.serverId !== serverId);
299
+ dumpUnlocked(pending, remain);
300
+ });
301
+ }
302
+ catch {
303
+ // no pending file is fine
304
+ }
305
+ return { path, pinCount, tainted };
306
+ }
307
+ //# sourceMappingURL=pendingStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingStore.js","sourceRoot":"","sources":["../../src/pendingStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,SAAS,GAGV,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;AAEzC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAC7B,MAAM,IAAI,GAAG,cAAc,CAAC;AAY5B,MAAM,UAAU,WAAW,CAAC,cAAsB;IAChD,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7E,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA4B;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,MAAM;QACP,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,IAAI;QACL,UAAU,KAAK,IAAI;QACnB,OAAO,UAAU,KAAK,QAAQ;QAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACzB,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,MAAM;QACP,CAAC,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,cAAc,CAAC;QACrD,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,IAAI,EACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,UAAqB;QACjC,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAI,GAA+B,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvE,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,OAAwB;IAC1D,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,MAAM,GAAG,GAA4B;gBACnC,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,eAAe,EAAE,GAAG,CAAC,cAAc;gBACnC,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,UAAU,EAAE,GAAG,CAAC,SAAS;aAC1B,CAAC;YACF,IAAI,GAAG,CAAC,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC;YACrD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;KACH,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACvC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,OAAO,CAAC,GAAG,IAAI,MAAM,MAAM,CAAC,CAAC;IACrE,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;IACtE,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC7C,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,OAAwB;IACnC,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,GAAG,SAAS;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;gBACrD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,IAOC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,KAAK,cAAc;QAAE,OAAO;IACxF,IAAI,CAAC,IAAI,CAAC,cAAc;QAAE,OAAO;IACjC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAoB,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IACE,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;gBAC9B,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;gBAC9B,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,EAC1C,CAAC;gBACD,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,GAAiB,EAAE,GAAkB;IACtD,IAAI,CAAC;QACH,IAAI,cAAc,CAAC,GAAG,CAAC,UAAqC,CAAC,KAAK,GAAG,CAAC,cAAc,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAqC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAe;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAE,SAAS,EAAE;QACrB,MAAM,EAAE,GAAG,CAAC,UAAU;QACtB,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,GAAiB,EACjB,IAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,cAAsB,EACtB,IAAiC;IAEjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;QACzC,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IACE,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBACzB,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBACzB,GAAG,CAAC,cAAc,KAAK,cAAc,EACrC,CAAC;gBACD,IAAI,IAAI,EAAE,YAAY,IAAI,GAAG,CAAC,YAAY,KAAK,cAAc;oBAAE,OAAO,IAAI,CAAC;gBAC3E,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,CACC,GAAG,CAAC,QAAQ,KAAK,QAAQ;YACzB,GAAG,CAAC,QAAQ,KAAK,QAAQ;YACzB,GAAG,CAAC,cAAc,KAAK,cAAc,CACtC,CACJ,CAAC;QACF,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,IAAwB;IAExB,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;QAC3B,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAChF,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC"}
@@ -4,7 +4,6 @@
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 { hashTool } from "./canonical.js";
8
7
  import type { Change } from "./schemaDiff.js";
9
8
  import type { FleetAdvisory } from "./driftQuery.js";
10
9
  export type ToolDef = Record<string, unknown>;
@@ -23,6 +22,11 @@ export interface PinnedTool {
23
22
  readonly via?: string;
24
23
  /** Kept so a pin written by the Python store is not stripped on the next flush. */
25
24
  readonly classification?: unknown;
25
+ /**
26
+ * Exact launch key when the pin was written, for example ``npm:pkg@1.2.3``.
27
+ * Absent on pins written before this field; those behave as floating.
28
+ */
29
+ readonly launchKey?: string;
26
30
  }
27
31
  export declare function utcNowIso(): string;
28
32
  /** Tier 0a advisory action-classification — the READ-side mirror of the Python
@@ -135,29 +139,49 @@ export declare function safetyRelevantDrift(v: PreflightVerdict): Change[];
135
139
  * Appends the M3 fleet advisory when present (AD-6-safe contract-diff note) — most
136
140
  * valuable on a PROCEED that matches your pin but drifted for the fleet. */
137
141
  export declare function renderVerdict(v: PreflightVerdict): string;
138
- /** In-memory pin store (the TS port keeps it in-memory: the SDK wrapper pins a
139
- * live session; durable JSON persistence is out of scope for the wrapper). Keyed
140
- * by `(serverId, toolName)`. Stores ONLY hashes (+ optional PUBLIC schema). */
142
+ /** Pin store keyed by `(serverId, toolName)`. Stores ONLY hashes (+ optional
143
+ * PUBLIC schema). A path argument persists to JSON under a sibling flock so a
144
+ * Python CLI approval and another process cannot lose each other's writes. */
141
145
  export declare class PreflightPin {
142
- private readonly index;
146
+ private index;
143
147
  private taintedReason;
144
148
  private newerFormat;
149
+ private diskSig;
145
150
  /** On-disk baseline, or null for an in-memory pin. */
146
151
  readonly path: string | null;
147
152
  constructor(path?: string | null);
153
+ /**
154
+ * Taint the store when it holds no pins for `serverId` but has before.
155
+ *
156
+ * The constructor check only sees the whole file. A valid store that holds
157
+ * another server's pins passes it, so the per-server check runs once the
158
+ * server id is known (the Gate calls this). An index written before server
159
+ * ids were recorded never taints here.
160
+ */
161
+ expectServer(serverId: string): void;
148
162
  /** Closed reason when a baseline that should have been readable was not. */
149
163
  get tainted(): string | null;
150
164
  get unsupportedVersion(): boolean;
151
165
  private key;
166
+ private lstatStore;
167
+ private signature;
168
+ private parsePin;
169
+ private loadIntoIndex;
170
+ private emptyStoreIsUnreadable;
171
+ private recordsFromDisk;
172
+ private reloadHoldingLock;
173
+ /** Reload when another process replaced the file. No-op for an in-memory pin. */
174
+ reloadIfChanged(): void;
152
175
  get(serverId: string, toolName: string): PinnedTool | null;
153
176
  put(pin: PinnedTool): void;
154
- private load;
155
177
  private flush;
156
178
  toolsFor(serverId: string): PinnedTool[];
157
179
  allPins(): PinnedTool[];
158
180
  }
181
+ /** Remove ``storePath`` from the ever-pinned index. */
182
+ export declare function clearEverPinned(storePath: string): void;
159
183
  export declare function sanitizeServerId(serverId: string): string;
160
184
  /** Pin file for one server. `MCPINDEX_STATE_DIR/pins/<id>.json`, else `~/.mcpindex/pins/<id>.json`. */
161
185
  export declare function defaultPinStorePath(serverId: string): string;
162
- export { hashTool };
186
+ export { hashTool, approvalDigest } from "./canonical.js";
163
187
  //# sourceMappingURL=preflight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;;;wFAQwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,SAAS;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACtF;AAED;gEACgE;AAChE;;;;;;;;6CAQ6C;AAC7C,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;;;;2DAMuD;IACvD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;;;;qDASiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;2EAKuE;IACvE,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3D;;;;gEAI4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,wBAAgB,WAAW,CACzB,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,GACxE,OAAO,CAAC,gBAAgB,CAAC,GAC1B,gBAAgB,CAwBlB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAEjE;AAED;;;4EAG4E;AAC5E,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAezD;AA0CD;;+EAE+E;AAC/E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAAS;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhC,4EAA4E;IAC5E,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,OAAO,CAAC,GAAG;IASX,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI1D,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAK1B,OAAO,CAAC,IAAI;IA6EZ,OAAO,CAAC,KAAK;IAoCb,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAIxC,OAAO,IAAI,UAAU,EAAE;CAGxB;AAwED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"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"}