@mysten-incubation/memwal-mcp 0.0.13-dev.4 → 0.0.13-dev.5
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/auth.d.ts +29 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +122 -12
- package/dist/auth.js.map +1 -1
- package/package.json +1 -1
package/dist/auth.d.ts
CHANGED
|
@@ -51,6 +51,35 @@ export declare function loadCreds(): MemWalCredentials | null;
|
|
|
51
51
|
* they are routine, and a backup per login would just churn the directory.
|
|
52
52
|
*/
|
|
53
53
|
export declare function saveCreds(creds: MemWalCredentials): SaveCredsResult;
|
|
54
|
+
/**
|
|
55
|
+
* Move `tmp` onto `path`, atomically where the platform can.
|
|
56
|
+
*
|
|
57
|
+
* POSIX `rename(2)` replaces a destination regardless of who has it open, so
|
|
58
|
+
* there is nothing to handle there and any error is a real one. Windows
|
|
59
|
+
* implements the same call as `MoveFileEx(MOVEFILE_REPLACE_EXISTING)`, which
|
|
60
|
+
* refuses with EPERM / EACCES / EBUSY while another handle holds the
|
|
61
|
+
* destination — an antivirus scan or a backup agent touching
|
|
62
|
+
* `credentials.json` is enough. Before this file wrote through a temp inode,
|
|
63
|
+
* `writeFileSync` to the final path survived that; `login.ts` turns a thrown
|
|
64
|
+
* `saveCreds` into an HTTP 500, so a lock that lasts a few milliseconds would
|
|
65
|
+
* otherwise become a failed sign-in.
|
|
66
|
+
*
|
|
67
|
+
* So on Windows: retry briefly, then write in place rather than fail. That
|
|
68
|
+
* fallback gives up the atomic swap, but not the property this function exists
|
|
69
|
+
* for — Windows does not enforce POSIX mode bits at all, so `0600` was never
|
|
70
|
+
* doing the work there; NTFS ACLs are, and they are inherited from the
|
|
71
|
+
* directory either way. On POSIX, where the mode IS the protection, there is no
|
|
72
|
+
* fallback and no retry.
|
|
73
|
+
*
|
|
74
|
+
* `deps` is a seam for tests. CI has no Windows runner, and the fallback is the
|
|
75
|
+
* one branch here that can leave a second plaintext copy of the delegate key on
|
|
76
|
+
* disk, so it must be exercisable off Windows.
|
|
77
|
+
*/
|
|
78
|
+
export declare function replaceWithTemp(tmp: string, path: string, contents: string, deps?: {
|
|
79
|
+
platform?: string;
|
|
80
|
+
rename?: (from: string, to: string) => void;
|
|
81
|
+
sleep?: (ms: number) => void;
|
|
82
|
+
}): void;
|
|
54
83
|
/** What `saveCreds` did, so the caller can tell the user precisely — naming
|
|
55
84
|
* both accounts is the difference between a warning they can act on and the
|
|
56
85
|
* silent swap reported in GH #628. */
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,iBAAiB;IAC9B,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC;CACd;AAkDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAWpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,iBAAiB;IAC9B,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC;CACd;AAkDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAWpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,CAKnE;AAqDD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3B,GACP,IAAI,CAuCN;AAED;;sCAEsC;AACtC,MAAM,WAAW,eAAe;IAC5B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb;iCAC6B;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;kCAC8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAQ1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,eAAe,EACtB,iBAAiB,EAAE,MAAM,GAC1B,MAAM,GAAG,IAAI,CASf;AA0BD;yEACyE;AACzE,MAAM,WAAW,gBAAgB;IAC7B;wBACoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;2EACuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAa7C"}
|
package/dist/auth.js
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* documentation patterns transfer cleanly.
|
|
11
11
|
*/
|
|
12
12
|
import { homedir } from "node:os";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import { randomUUID } from "node:crypto";
|
|
14
|
+
import { join, dirname, basename } from "node:path";
|
|
15
|
+
import { mkdirSync, readFileSync, writeFileSync, renameSync, unlinkSync, existsSync, } from "node:fs";
|
|
15
16
|
const CREDS_FILE = "credentials.json";
|
|
16
17
|
/** Global, per-machine location. Always the fallback, and the only location
|
|
17
18
|
* before project-scoping existed — a machine with no project-local file keeps
|
|
@@ -110,17 +111,124 @@ export function loadCreds() {
|
|
|
110
111
|
export function saveCreds(creds) {
|
|
111
112
|
const path = credsPath();
|
|
112
113
|
const replaced = backupIfReplacingAnotherAccount(path, creds.accountId);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
writeSecretFile(path, JSON.stringify(creds, null, 2));
|
|
115
|
+
return { path, ...replaced };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Write a file whose bytes are only ever reachable through an inode this call
|
|
119
|
+
* created at `0600`.
|
|
120
|
+
*
|
|
121
|
+
* The obvious version — write to the final path, then `chmod` it — does not
|
|
122
|
+
* hold that property. `writeFileSync`'s `mode` follows POSIX `open()`: the
|
|
123
|
+
* kernel applies it when it creates the inode and ignores it for one that
|
|
124
|
+
* already exists. So a credentials file that anything outside this code left
|
|
125
|
+
* world-readable (a manual `chmod`, a restored backup, another tool) would
|
|
126
|
+
* receive the plaintext delegate key under the *old* mode, with a second,
|
|
127
|
+
* separate syscall to tighten it afterwards. Anyone reading the path in
|
|
128
|
+
* between gets the key.
|
|
129
|
+
*
|
|
130
|
+
* Writing a fresh file and renaming removes that window instead of shortening
|
|
131
|
+
* it. `rename(2)` repoints the name atomically, so a reader sees either the
|
|
132
|
+
* whole old file or the whole new one, never a permissive inode holding a new
|
|
133
|
+
* secret. `wx` (`O_EXCL`) makes a temp path that already exists — an
|
|
134
|
+
* interrupted earlier run, or a file planted by someone else — a hard failure
|
|
135
|
+
* rather than a write through a file this code did not create.
|
|
136
|
+
*/
|
|
137
|
+
function writeSecretFile(path, contents) {
|
|
138
|
+
const dir = dirname(path);
|
|
139
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
140
|
+
// Named off the target and randomised, so concurrent saves cannot collide
|
|
141
|
+
// on it and no one can guess it ahead of time. Dot-prefixed to keep a
|
|
142
|
+
// crashed run's leftovers out of the way of directory listings.
|
|
143
|
+
const tmp = join(dir, `.${basename(path)}.${process.pid}.${randomUUID()}.tmp`);
|
|
117
144
|
try {
|
|
118
|
-
|
|
145
|
+
writeFileSync(tmp, contents, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
146
|
+
replaceWithTemp(tmp, path, contents);
|
|
119
147
|
}
|
|
120
|
-
catch {
|
|
121
|
-
|
|
148
|
+
catch (err) {
|
|
149
|
+
// Never leave a temp file holding the secret behind on a failed write.
|
|
150
|
+
try {
|
|
151
|
+
unlinkSync(tmp);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
/* already gone, or never created */
|
|
155
|
+
}
|
|
156
|
+
throw err;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/** Windows errors for "someone else holds the destination open". */
|
|
160
|
+
const WIN32_LOCKED_CODES = new Set(["EPERM", "EACCES", "EBUSY"]);
|
|
161
|
+
const WIN32_RENAME_ATTEMPTS = 5;
|
|
162
|
+
const WIN32_RENAME_BACKOFF_MS = 20;
|
|
163
|
+
/** Block the calling thread. `saveCreds` is synchronous all the way up. */
|
|
164
|
+
function sleepSync(ms) {
|
|
165
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Move `tmp` onto `path`, atomically where the platform can.
|
|
169
|
+
*
|
|
170
|
+
* POSIX `rename(2)` replaces a destination regardless of who has it open, so
|
|
171
|
+
* there is nothing to handle there and any error is a real one. Windows
|
|
172
|
+
* implements the same call as `MoveFileEx(MOVEFILE_REPLACE_EXISTING)`, which
|
|
173
|
+
* refuses with EPERM / EACCES / EBUSY while another handle holds the
|
|
174
|
+
* destination — an antivirus scan or a backup agent touching
|
|
175
|
+
* `credentials.json` is enough. Before this file wrote through a temp inode,
|
|
176
|
+
* `writeFileSync` to the final path survived that; `login.ts` turns a thrown
|
|
177
|
+
* `saveCreds` into an HTTP 500, so a lock that lasts a few milliseconds would
|
|
178
|
+
* otherwise become a failed sign-in.
|
|
179
|
+
*
|
|
180
|
+
* So on Windows: retry briefly, then write in place rather than fail. That
|
|
181
|
+
* fallback gives up the atomic swap, but not the property this function exists
|
|
182
|
+
* for — Windows does not enforce POSIX mode bits at all, so `0600` was never
|
|
183
|
+
* doing the work there; NTFS ACLs are, and they are inherited from the
|
|
184
|
+
* directory either way. On POSIX, where the mode IS the protection, there is no
|
|
185
|
+
* fallback and no retry.
|
|
186
|
+
*
|
|
187
|
+
* `deps` is a seam for tests. CI has no Windows runner, and the fallback is the
|
|
188
|
+
* one branch here that can leave a second plaintext copy of the delegate key on
|
|
189
|
+
* disk, so it must be exercisable off Windows.
|
|
190
|
+
*/
|
|
191
|
+
export function replaceWithTemp(tmp, path, contents, deps = {}) {
|
|
192
|
+
const platform = deps.platform ?? process.platform;
|
|
193
|
+
const rename = deps.rename ?? renameSync;
|
|
194
|
+
const sleep = deps.sleep ?? sleepSync;
|
|
195
|
+
if (platform !== "win32") {
|
|
196
|
+
rename(tmp, path);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
for (let attempt = 1;; attempt++) {
|
|
200
|
+
try {
|
|
201
|
+
rename(tmp, path);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
const code = err.code ?? "";
|
|
206
|
+
if (!WIN32_LOCKED_CODES.has(code))
|
|
207
|
+
throw err;
|
|
208
|
+
if (attempt < WIN32_RENAME_ATTEMPTS) {
|
|
209
|
+
sleep(WIN32_RENAME_BACKOFF_MS * attempt);
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
// Still locked. Write through the existing handle's inode rather
|
|
213
|
+
// than failing the sign-in.
|
|
214
|
+
writeFileSync(path, contents, { encoding: "utf8", mode: 0o600 });
|
|
215
|
+
// This returns SUCCESSFULLY, so `writeSecretFile`'s catch never
|
|
216
|
+
// runs and nothing else will remove `tmp` — which still holds the
|
|
217
|
+
// plaintext delegate key. Every locked save would otherwise leave
|
|
218
|
+
// another copy of it beside the credentials file, which is the
|
|
219
|
+
// opposite of what this whole helper is for.
|
|
220
|
+
//
|
|
221
|
+
// Best-effort: a temp that cannot be unlinked must not fail a save
|
|
222
|
+
// that has already landed.
|
|
223
|
+
try {
|
|
224
|
+
unlinkSync(tmp);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
/* nothing more to do; the destination write already succeeded */
|
|
228
|
+
}
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
122
231
|
}
|
|
123
|
-
return { path, ...replaced };
|
|
124
232
|
}
|
|
125
233
|
/**
|
|
126
234
|
* The message shown *before* a sign-in that would overwrite existing
|
|
@@ -172,8 +280,10 @@ function backupIfReplacingAnotherAccount(path, incomingAccountId) {
|
|
|
172
280
|
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
173
281
|
const backup = join(dirname(path), `credentials.backup-${stamp}.json`);
|
|
174
282
|
try {
|
|
175
|
-
|
|
176
|
-
|
|
283
|
+
// Through the same writer as the credentials file itself: the backup is
|
|
284
|
+
// a second copy of the same plaintext delegate key, and `copyFileSync`
|
|
285
|
+
// would create it under the process umask before any tightening.
|
|
286
|
+
writeSecretFile(backup, readFileSync(path, "utf8"));
|
|
177
287
|
return { replacedAccountId: current.accountId, backedUpTo: backup };
|
|
178
288
|
}
|
|
179
289
|
catch {
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mysten-incubation/memwal-mcp",
|
|
3
|
-
"version": "0.0.13-dev.
|
|
3
|
+
"version": "0.0.13-dev.5",
|
|
4
4
|
"description": "Walrus Memory MCP client — single-binary stdio MCP server that bridges Cursor / Claude Desktop / Antigravity / Claude Code to the Walrus Memory relayer. Handles browser-based wallet login on first run.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|