@mysten-incubation/memwal-mcp 0.0.10 → 0.0.11-dev.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.
@@ -1 +1 @@
1
- {"version":3,"file":"auth-required.d.ts","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA4I9D;;4CAE4C;AAC5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6B,CAAC;AAE3D;;8BAE8B;AAC9B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8B,CAAC;AAgCvE;;;mCAGmC;AACnC,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;4DAIwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAyID;;yCAEyC;AACzC,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB;;sCAEkC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAsHD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgE7B"}
1
+ {"version":3,"file":"auth-required.d.ts","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA4I9D;;4CAE4C;AAC5C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6B,CAAC;AAE3D;;8BAE8B;AAC9B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8B,CAAC;AAgCvE;;;mCAGmC;AACnC,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;4DAIwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAgID;;yCAEyC;AACzC,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB;;sCAEkC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAsHD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgE7B"}
@@ -23,7 +23,7 @@
23
23
  */
24
24
  import { loadCreds } from "./auth.js";
25
25
  import { log } from "./logger.js";
26
- import { loginFlow } from "./login.js";
26
+ import { startOrReuseLoginFlow } from "./login.js";
27
27
  import { AUTH_REQUIRED_INSTRUCTIONS } from "./instructions.js";
28
28
  import { MEMWAL_MCP_VERSION } from "./version.js";
29
29
  const SIGNED_OUT_REMEMBER = "Save a fact to the user's Walrus Memory personal memory. Call ONLY when the user explicitly asks to remember/save something. Pass the full, detailed text — never summarize.";
@@ -208,39 +208,28 @@ function sendLogMessage(level, text) {
208
208
  * the bridge picks up the saved creds on its next call.
209
209
  */
210
210
  async function handleLoginToolCall(config, _progressToken) {
211
- let connectUrl = null;
212
- // Promise that resolves with the URL as soon as the listener is bound.
213
- const urlReady = new Promise((resolve) => {
214
- // Fire loginFlow but DO NOT await it runs in the background.
215
- // openBrowser: false because (a) child-process spawning a browser is
216
- // unreliable across MCP clients, and (b) macOS `open <url>` often
217
- // foregrounds an existing memory.walrus.xyz tab instead of navigating to
218
- // the full /connect/mcp?... URL so user lands on the homepage,
219
- // not the consent screen. The agent surfaces the clickable URL
220
- // from the tool result instead.
221
- loginFlow({
222
- relayerUrl: config.relayerUrl,
223
- webUrl: config.webUrl,
224
- label: config.label,
225
- timeoutMs: LOGIN_BG_TIMEOUT_MS,
226
- openBrowser: false,
227
- onUrl: (url) => {
228
- connectUrl = url;
229
- resolve(url);
230
- // Also push to log notification — clients that surface these
231
- // (Cursor) get a second visible copy of the URL.
232
- sendLogMessage("info", `Walrus Memory MCP login URL: ${url}`);
233
- },
234
- })
235
- .then((creds) => {
236
- log.info("memwal_login.bg.success", {
237
- accountId: creds.accountId,
238
- delegateAddress: creds.delegateAddress,
239
- });
240
- })
241
- .catch((err) => {
242
- const msg = err instanceof Error ? err.message : String(err);
243
- log.warn("memwal_login.bg.failed", { msg });
211
+ // Fire login but DO NOT await the wallet callback — it runs in the
212
+ // background. openBrowser: false because (a) child-process spawning a
213
+ // browser is unreliable across MCP clients, and (b) macOS `open <url>`
214
+ // often foregrounds an existing memory.walrus.xyz tab instead of
215
+ // navigating to the full /connect/mcp?... URL. The agent surfaces the
216
+ // clickable URL from the tool result instead.
217
+ //
218
+ // Concurrent memwal_login calls join this in-flight flow instead of
219
+ // opening a second listener (that race hung later recall/remember).
220
+ const session = startOrReuseLoginFlow({
221
+ relayerUrl: config.relayerUrl,
222
+ webUrl: config.webUrl,
223
+ label: config.label,
224
+ timeoutMs: LOGIN_BG_TIMEOUT_MS,
225
+ openBrowser: false,
226
+ onUrl: (url) => {
227
+ sendLogMessage("info", `Walrus Memory MCP login URL: ${url}`);
228
+ },
229
+ }, (creds) => {
230
+ log.info("memwal_login.bg.success", {
231
+ accountId: creds.accountId,
232
+ delegateAddress: creds.delegateAddress,
244
233
  });
245
234
  });
246
235
  // Race the URL-ready against a short timeout. The listener bind is
@@ -249,7 +238,7 @@ async function handleLoginToolCall(config, _progressToken) {
249
238
  const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error("Listener never started")), URL_READY_TIMEOUT_MS).unref?.());
250
239
  let url;
251
240
  try {
252
- url = await Promise.race([urlReady, timeoutPromise]);
241
+ url = await Promise.race([session.url, timeoutPromise]);
253
242
  }
254
243
  catch (err) {
255
244
  const msg = err instanceof Error ? err.message : String(err);
@@ -1 +1 @@
1
- {"version":3,"file":"auth-required.js","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-required.js","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts CHANGED
@@ -20,11 +20,87 @@ export interface MemWalCredentials {
20
20
  /** Schema version — bump when we change shape. */
21
21
  version: 1;
22
22
  }
23
+ /**
24
+ * Which credentials file this process should read and write.
25
+ *
26
+ * The nearest project-local `.memwal/credentials.json` at or above the working
27
+ * directory wins over the global one, the way `.npmrc` and `.git/config`
28
+ * resolve. Signing in from one project otherwise repoints every other project
29
+ * on the machine at a different account and delegate key, silently — memories
30
+ * then land on the wrong account, on immutable storage, with no delete path
31
+ * (GH #628).
32
+ *
33
+ * Presence-based on purpose: creating the local file is the opt-in, so this is
34
+ * purely additive. Resolved per call rather than at module load, because the
35
+ * working directory is not knowable at import time.
36
+ */
23
37
  export declare function credsPath(): string;
24
38
  /** Load credentials from disk. Returns null if missing or malformed. */
25
39
  export declare function loadCreds(): MemWalCredentials | null;
26
- /** Write credentials with secure (`0600`) permission. */
27
- export declare function saveCreds(creds: MemWalCredentials): void;
28
- /** Delete credentials. No-op if the file does not exist. */
29
- export declare function clearCreds(): void;
40
+ /**
41
+ * Write credentials with secure (`0600`) permission, to whichever file
42
+ * `credsPath()` resolves to.
43
+ *
44
+ * Replacing a *different* account backs the outgoing file up first. There was
45
+ * no backup of any kind before, so an overwrite was unrecoverable — and the
46
+ * overwrite that matters is exactly the one that switches accounts (GH #628).
47
+ * Same-account rewrites (a label change, a rotated delegate) are not backed up:
48
+ * they are routine, and a backup per login would just churn the directory.
49
+ */
50
+ export declare function saveCreds(creds: MemWalCredentials): SaveCredsResult;
51
+ /** What `saveCreds` did, so the caller can tell the user precisely — naming
52
+ * both accounts is the difference between a warning they can act on and the
53
+ * silent swap reported in GH #628. */
54
+ export interface SaveCredsResult {
55
+ /** File actually written (project-local or global). */
56
+ path: string;
57
+ /** Account whose credentials were displaced. Absent on a first sign-in or
58
+ * a same-account re-save. */
59
+ replacedAccountId?: string;
60
+ /** Where the displaced file was copied. Absent when nothing was replaced,
61
+ * or when the copy failed. */
62
+ backedUpTo?: string;
63
+ }
64
+ /**
65
+ * The message shown *before* a sign-in that would overwrite existing
66
+ * credentials, or null when there is nothing to lose.
67
+ *
68
+ * Deliberately shown ahead of the browser step: that is the last moment the
69
+ * user can back out for free. The incoming account is not known until the
70
+ * callback arrives, by which point a delegate key has already been registered
71
+ * on-chain — so a warning that waits for both ids is a warning that arrives
72
+ * too late to act on.
73
+ */
74
+ export declare function formatPendingSignInWarning(): string | null;
75
+ /**
76
+ * The message shown when a sign-in displaced a different account, or null when
77
+ * nothing was replaced.
78
+ *
79
+ * Both ids on purpose: "your credentials changed" is useless without knowing
80
+ * which account you left and which you are now on — that ambiguity is the whole
81
+ * of GH #628. Kept here as a pure function so the wording is testable without
82
+ * driving a browser login.
83
+ */
84
+ export declare function formatReplacementNotice(saved: SaveCredsResult, incomingAccountId: string): string | null;
85
+ /** What `clearCreds` did. Reported rather than printed, for the same reason
86
+ * `saveCreds` reports: persistence should not own user-facing output. */
87
+ export interface ClearCredsResult {
88
+ /** File actually deleted. Absent when there was nothing to remove, or the
89
+ * unlink failed. */
90
+ removedPath?: string;
91
+ /** Credentials that take over from the next run, because removing the file
92
+ * above them re-exposed them. Absent when signing out was complete. */
93
+ fallbackPath?: string;
94
+ }
95
+ /**
96
+ * Delete the credentials this process resolves to. No-op if none exist.
97
+ *
98
+ * Resolution happens *before* the unlink on purpose: once the file is gone
99
+ * `credsPath()` reports the next one down the chain, so a caller that asked
100
+ * afterwards would name a file it never touched. That same survivor is what
101
+ * the next run loads, so removing a project file while a global one exists is
102
+ * not a full sign-out — `fallbackPath` is how the caller can say so instead of
103
+ * leaving the user to discover a different account later (GH #628).
104
+ */
105
+ export declare function clearCreds(): ClearCredsResult;
30
106
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAeA,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;AAKD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAUpD;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAUxD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,IAAI,IAAI,CAQjC"}
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;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAWpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,CAanE;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;AAwBD;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
@@ -11,18 +11,77 @@
11
11
  */
12
12
  import { homedir } from "node:os";
13
13
  import { join, dirname } from "node:path";
14
- import { mkdirSync, readFileSync, writeFileSync, chmodSync, unlinkSync, existsSync } from "node:fs";
15
- const CREDS_DIR = join(homedir(), ".memwal");
16
- const CREDS_PATH = join(CREDS_DIR, "credentials.json");
14
+ import { mkdirSync, readFileSync, writeFileSync, chmodSync, unlinkSync, existsSync, copyFileSync, } from "node:fs";
15
+ const CREDS_FILE = "credentials.json";
16
+ /** Global, per-machine location. Always the fallback, and the only location
17
+ * before project-scoping existed — a machine with no project-local file keeps
18
+ * behaving exactly as it did. */
19
+ function globalCredsPath() {
20
+ return join(homedir(), ".memwal", CREDS_FILE);
21
+ }
22
+ /**
23
+ * Nearest project-local location: the working directory, then each ancestor.
24
+ *
25
+ * Walking up is what makes the `.npmrc` / `.git/config` comparison true, and it
26
+ * is load-bearing rather than cosmetic. A shell that has `cd src`, or an MCP
27
+ * host launched with its cwd somewhere below the project root, would otherwise
28
+ * miss the project file and silently fall back to the global account — the
29
+ * exact swap GH #628 is about, just one directory deeper.
30
+ *
31
+ * The walk is bounded at the project root, the home directory, or the
32
+ * filesystem root, whichever comes first. Returns null when nothing inside
33
+ * those bounds carries a credentials file.
34
+ */
35
+ function projectCredsPath() {
36
+ const home = homedir();
37
+ const global = globalCredsPath();
38
+ let dir = process.cwd();
39
+ for (;;) {
40
+ // The home directory is where the *global* file lives. Matching it here
41
+ // would relabel it project-local and invert the precedence this whole
42
+ // function exists to establish.
43
+ if (dir === home)
44
+ return null;
45
+ const candidate = join(dir, ".memwal", CREDS_FILE);
46
+ if (candidate !== global && existsSync(candidate))
47
+ return candidate;
48
+ // Stop at the project root. `.git/config` resolution ends here too, and
49
+ // bounding the walk is what keeps it from climbing out of the project
50
+ // into shared parents — including the real home directory, which is
51
+ // reachable from a working directory that is not underneath it (any
52
+ // test that overrides HOME, for one).
53
+ if (existsSync(join(dir, ".git")))
54
+ return null;
55
+ const parent = dirname(dir);
56
+ if (parent === dir)
57
+ return null; // filesystem root
58
+ dir = parent;
59
+ }
60
+ }
61
+ /**
62
+ * Which credentials file this process should read and write.
63
+ *
64
+ * The nearest project-local `.memwal/credentials.json` at or above the working
65
+ * directory wins over the global one, the way `.npmrc` and `.git/config`
66
+ * resolve. Signing in from one project otherwise repoints every other project
67
+ * on the machine at a different account and delegate key, silently — memories
68
+ * then land on the wrong account, on immutable storage, with no delete path
69
+ * (GH #628).
70
+ *
71
+ * Presence-based on purpose: creating the local file is the opt-in, so this is
72
+ * purely additive. Resolved per call rather than at module load, because the
73
+ * working directory is not knowable at import time.
74
+ */
17
75
  export function credsPath() {
18
- return CREDS_PATH;
76
+ return projectCredsPath() ?? globalCredsPath();
19
77
  }
20
78
  /** Load credentials from disk. Returns null if missing or malformed. */
21
79
  export function loadCreds() {
22
- if (!existsSync(CREDS_PATH))
80
+ const path = credsPath();
81
+ if (!existsSync(path))
23
82
  return null;
24
83
  try {
25
- const raw = readFileSync(CREDS_PATH, "utf8");
84
+ const raw = readFileSync(path, "utf8");
26
85
  const parsed = JSON.parse(raw);
27
86
  if (!isValid(parsed))
28
87
  return null;
@@ -32,29 +91,116 @@ export function loadCreds() {
32
91
  return null;
33
92
  }
34
93
  }
35
- /** Write credentials with secure (`0600`) permission. */
94
+ /**
95
+ * Write credentials with secure (`0600`) permission, to whichever file
96
+ * `credsPath()` resolves to.
97
+ *
98
+ * Replacing a *different* account backs the outgoing file up first. There was
99
+ * no backup of any kind before, so an overwrite was unrecoverable — and the
100
+ * overwrite that matters is exactly the one that switches accounts (GH #628).
101
+ * Same-account rewrites (a label change, a rotated delegate) are not backed up:
102
+ * they are routine, and a backup per login would just churn the directory.
103
+ */
36
104
  export function saveCreds(creds) {
37
- mkdirSync(dirname(CREDS_PATH), { recursive: true, mode: 0o700 });
38
- writeFileSync(CREDS_PATH, JSON.stringify(creds, null, 2), { encoding: "utf8", mode: 0o600 });
105
+ const path = credsPath();
106
+ const replaced = backupIfReplacingAnotherAccount(path, creds.accountId);
107
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
108
+ writeFileSync(path, JSON.stringify(creds, null, 2), { encoding: "utf8", mode: 0o600 });
39
109
  // writeFileSync's `mode` argument is only honored on file creation; ensure
40
110
  // the permission on an existing file matches.
41
111
  try {
42
- chmodSync(CREDS_PATH, 0o600);
112
+ chmodSync(path, 0o600);
43
113
  }
44
114
  catch {
45
115
  /* Windows etc. — best effort */
46
116
  }
117
+ return { path, ...replaced };
47
118
  }
48
- /** Delete credentials. No-op if the file does not exist. */
119
+ /**
120
+ * The message shown *before* a sign-in that would overwrite existing
121
+ * credentials, or null when there is nothing to lose.
122
+ *
123
+ * Deliberately shown ahead of the browser step: that is the last moment the
124
+ * user can back out for free. The incoming account is not known until the
125
+ * callback arrives, by which point a delegate key has already been registered
126
+ * on-chain — so a warning that waits for both ids is a warning that arrives
127
+ * too late to act on.
128
+ */
129
+ export function formatPendingSignInWarning() {
130
+ const current = loadCreds();
131
+ if (!current)
132
+ return null;
133
+ return (`Signing in will replace the credentials in ${credsPath()} ` +
134
+ `(currently account ${current.accountId}). ` +
135
+ `The existing file is backed up if the new sign-in is a different account.`);
136
+ }
137
+ /**
138
+ * The message shown when a sign-in displaced a different account, or null when
139
+ * nothing was replaced.
140
+ *
141
+ * Both ids on purpose: "your credentials changed" is useless without knowing
142
+ * which account you left and which you are now on — that ambiguity is the whole
143
+ * of GH #628. Kept here as a pure function so the wording is testable without
144
+ * driving a browser login.
145
+ */
146
+ export function formatReplacementNotice(saved, incomingAccountId) {
147
+ if (!saved.replacedAccountId)
148
+ return null;
149
+ const lines = [
150
+ `Replaced credentials for a DIFFERENT account in ${saved.path}:`,
151
+ ` was: ${saved.replacedAccountId}`,
152
+ ` now: ${incomingAccountId}`,
153
+ ];
154
+ if (saved.backedUpTo)
155
+ lines.push(` previous file backed up to ${saved.backedUpTo}`);
156
+ return lines.join("\n");
157
+ }
158
+ /** Copy the current credentials aside when the incoming ones belong to a
159
+ * different account. Best effort: failing to back up must not block a login. */
160
+ function backupIfReplacingAnotherAccount(path, incomingAccountId) {
161
+ if (!existsSync(path))
162
+ return {};
163
+ const current = loadCreds();
164
+ if (!current || current.accountId === incomingAccountId)
165
+ return {};
166
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
167
+ const backup = join(dirname(path), `credentials.backup-${stamp}.json`);
168
+ try {
169
+ copyFileSync(path, backup);
170
+ chmodSync(backup, 0o600);
171
+ return { replacedAccountId: current.accountId, backedUpTo: backup };
172
+ }
173
+ catch {
174
+ // Never block sign-in on a failed backup — but still report the
175
+ // replacement, since that is the part the user needs to know.
176
+ return { replacedAccountId: current.accountId };
177
+ }
178
+ }
179
+ /**
180
+ * Delete the credentials this process resolves to. No-op if none exist.
181
+ *
182
+ * Resolution happens *before* the unlink on purpose: once the file is gone
183
+ * `credsPath()` reports the next one down the chain, so a caller that asked
184
+ * afterwards would name a file it never touched. That same survivor is what
185
+ * the next run loads, so removing a project file while a global one exists is
186
+ * not a full sign-out — `fallbackPath` is how the caller can say so instead of
187
+ * leaving the user to discover a different account later (GH #628).
188
+ */
49
189
  export function clearCreds() {
50
- if (existsSync(CREDS_PATH)) {
51
- try {
52
- unlinkSync(CREDS_PATH);
53
- }
54
- catch {
55
- /* swallow */
56
- }
190
+ const path = credsPath();
191
+ if (!existsSync(path))
192
+ return {};
193
+ try {
194
+ unlinkSync(path);
195
+ }
196
+ catch {
197
+ // Nothing was removed; claiming otherwise would be worse than silence.
198
+ return {};
57
199
  }
200
+ const survivor = credsPath();
201
+ return existsSync(survivor) && survivor !== path
202
+ ? { removedPath: path, fallbackPath: survivor }
203
+ : { removedPath: path };
58
204
  }
59
205
  function isValid(obj) {
60
206
  if (!obj || typeof obj !== "object")
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;AAC1C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAyBpG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAEvD,MAAM,UAAU,SAAS;IACrB,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS;IACrB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,MAA2B,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,SAAS,CAAC,KAAwB;IAC9C,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,2EAA2E;IAC3E,8CAA8C;IAC9C,IAAI,CAAC;QACD,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACL,gCAAgC;IACpC,CAAC;AACL,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU;IACtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACL,aAAa;QACjB,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IACzB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,CACH,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ;QACxC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC9C,OAAO,CAAC,CAAC,oBAAoB,KAAK,QAAQ;QAC1C,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;QACrC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ;QACnC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACvC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,CAAC,CAAC,OAAO,KAAK,CAAC,CAClB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ main().catch((err) => {
5
5
  if (err?.stack && process.env.MEMWAL_MCP_DEBUG) {
6
6
  process.stderr.write(err.stack + "\n");
7
7
  }
8
- process.exit(1);
8
+ // Let the event loop drain so undici/libuv can close the handshake
9
+ // socket. process.exit(1) here asserts on Windows (UV_HANDLE_CLOSING).
10
+ process.exitCode = 1;
9
11
  });
10
12
  //# sourceMappingURL=memwal-mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memwal-mcp.js","sourceRoot":"","sources":["../../src/bin/memwal-mcp.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,GAAG,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"memwal-mcp.js","sourceRoot":"","sources":["../../src/bin/memwal-mcp.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,GAAG,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,mEAAmE;IACnE,uEAAuE;IACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC"}
package/dist/bridge.d.ts CHANGED
@@ -62,7 +62,7 @@ interface RpcMessage {
62
62
  * file directly. They appear in `tools/list` by splicing them into the
63
63
  * relayer's response on the way back to the client.
64
64
  */
65
- export declare function runBridge(creds: MemWalCredentials, config: BridgeConfig,
65
+ export declare function runBridge(initialCreds: MemWalCredentials, config: BridgeConfig,
66
66
  /** Requests the auth-required server already read off stdin before it
67
67
  * detected fresh credentials and handed control here (e.g. the
68
68
  * `memwal_recall` that triggered the hot-handoff). Replayed once the SSE
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AASnD;;gFAEgF;AAChF,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;8BAG0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAerF;AAwID,UAAU,UAAU;IAChB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAkaD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC3B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,YAAY;AACpB;;;;yEAIyE;AACzE,YAAY,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,IAAI,CAAC,CAk2Bf"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AASnD;;gFAEgF;AAChF,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;8BAG0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAerF;AAqJD,UAAU,UAAU;IAChB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAgcD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC3B,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,YAAY;AACpB;;;;yEAIyE;AACzE,YAAY,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+jCf"}