@mysten-incubation/memwal-mcp 0.0.14-dev.1 → 0.0.14-dev.11
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/README.md +238 -1
- package/dist/auth-required.d.ts +105 -0
- package/dist/auth-required.d.ts.map +1 -1
- package/dist/auth-required.js +48 -14
- package/dist/auth-required.js.map +1 -1
- package/dist/auth.d.ts +179 -18
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +458 -35
- package/dist/auth.js.map +1 -1
- package/dist/auto-save.d.ts +100 -0
- package/dist/auto-save.d.ts.map +1 -0
- package/dist/auto-save.js +290 -0
- package/dist/auto-save.js.map +1 -0
- package/dist/bridge.d.ts +10 -2
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +155 -25
- package/dist/bridge.js.map +1 -1
- package/dist/compatibility.d.ts.map +1 -1
- package/dist/compatibility.js +17 -2
- package/dist/compatibility.js.map +1 -1
- package/dist/consent.d.ts +36 -0
- package/dist/consent.d.ts.map +1 -0
- package/dist/consent.js +129 -0
- package/dist/consent.js.map +1 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +13 -1
- package/dist/crypto.js.map +1 -1
- package/dist/health-probe.d.ts +35 -0
- package/dist/health-probe.d.ts.map +1 -0
- package/dist/health-probe.js +87 -0
- package/dist/health-probe.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +266 -5
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +17 -21
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +74 -12
- package/dist/instructions.js.map +1 -1
- package/dist/login.d.ts +15 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +109 -9
- package/dist/login.js.map +1 -1
- package/dist/memory-policy.d.ts +38 -0
- package/dist/memory-policy.d.ts.map +1 -0
- package/dist/memory-policy.js +80 -0
- package/dist/memory-policy.js.map +1 -0
- package/dist/messages.d.ts +10 -3
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +16 -5
- package/dist/messages.js.map +1 -1
- package/dist/recovery.d.ts +1 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +15 -13
- package/dist/recovery.js.map +1 -1
- package/package.json +1 -1
package/dist/login.d.ts
CHANGED
|
@@ -18,7 +18,19 @@ export interface LoginOptions {
|
|
|
18
18
|
* can't see the spawned browser tab.
|
|
19
19
|
*/
|
|
20
20
|
onUrl?: (connectUrl: string) => void;
|
|
21
|
+
freshKey?: boolean;
|
|
22
|
+
/** When set, `startOrReuseLoginFlow` aborts this listener so a newer
|
|
23
|
+
* sign-in can mint a key without the old timeout or callback writing
|
|
24
|
+
* over it. */
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
/** Fired when `freshKey` drops a pending record. The public key is no
|
|
27
|
+
* longer in the write-ahead file after the replacement is saved. */
|
|
28
|
+
onDiscarded?: (key: {
|
|
29
|
+
publicKey: string;
|
|
30
|
+
address: string;
|
|
31
|
+
}) => void;
|
|
21
32
|
}
|
|
33
|
+
export declare function isLoginSuperseded(err: unknown): boolean;
|
|
22
34
|
/** How long the background login listener stays bound, shared by every
|
|
23
35
|
* caller (auth-required mode and the bridge) so one env var controls the
|
|
24
36
|
* same deadline everywhere instead of each call site hard-coding its own.
|
|
@@ -46,6 +58,8 @@ export declare function startOrReuseLoginFlow(opts?: LoginOptions, onSuccess?: (
|
|
|
46
58
|
* URL and returned. Without this the failure is unobservable — see the
|
|
47
59
|
* catch below. */
|
|
48
60
|
onFailure?: (err: unknown) => void): InflightLogin;
|
|
49
|
-
/** Drop the in-flight handle
|
|
61
|
+
/** Drop the in-flight handle and close its listener. A late callback or
|
|
62
|
+
* timeout on that listener must not save credentials or clear the pending
|
|
63
|
+
* record a newer login just wrote. */
|
|
50
64
|
export declare function resetInflightLogin(): void;
|
|
51
65
|
//# sourceMappingURL=login.d.ts.map
|
package/dist/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAYnD,MAAM,WAAW,YAAY;IACzB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAYnD,MAAM,WAAW,YAAY;IACzB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;kBAEc;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;wEACoE;IACpE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACvE;AAQD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEvD;AAUD;;;;wEAIwE;AACxE,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAsID;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8XnF;AAED,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtC;AAKD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,GAAE,YAAiB,EACvB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;AAC9D;;kBAEkB;AAClB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GACnC,aAAa,CAsFf;AAED;;sCAEsC;AACtC,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
package/dist/login.js
CHANGED
|
@@ -22,6 +22,14 @@ import open from "open";
|
|
|
22
22
|
import { saveCreds, formatReplacementNotice, formatPendingSignInWarning, savePendingLogin, clearPendingLogin, reusablePendingLogin, } from "./auth.js";
|
|
23
23
|
import { generateKeypair } from "./crypto.js";
|
|
24
24
|
import { log, note } from "./logger.js";
|
|
25
|
+
function loginSupersededError() {
|
|
26
|
+
const err = new Error("Sign-in was replaced by a newer login. This listener is closed.");
|
|
27
|
+
err.name = "MemWalLoginSuperseded";
|
|
28
|
+
return err;
|
|
29
|
+
}
|
|
30
|
+
export function isLoginSuperseded(err) {
|
|
31
|
+
return err instanceof Error && err.name === "MemWalLoginSuperseded";
|
|
32
|
+
}
|
|
25
33
|
const DEFAULTS = {
|
|
26
34
|
webUrl: process.env.MEMWAL_WEB_URL ?? "https://memory.walrus.xyz",
|
|
27
35
|
relayerUrl: process.env.MEMWAL_SERVER_URL ?? "https://relayer.memory.walrus.xyz",
|
|
@@ -156,18 +164,48 @@ export async function loginFlow(opts = {}) {
|
|
|
156
164
|
...opts,
|
|
157
165
|
timeoutMs: opts.timeoutMs ?? resolveLoginTimeoutMs(),
|
|
158
166
|
};
|
|
167
|
+
// A newer freshKey can abort during generateKeypair, before the listener
|
|
168
|
+
// below is subscribed. Bail before this flow writes the pending record or
|
|
169
|
+
// hands out a URL whose server is already closed.
|
|
170
|
+
const superseded = () => cfg.signal?.aborted === true;
|
|
171
|
+
if (superseded())
|
|
172
|
+
throw loginSupersededError();
|
|
159
173
|
// Adopt a still-valid record for this relayer rather than minting over it.
|
|
160
174
|
// Recovery only runs at process start and is skipped for `--login`, so a
|
|
161
175
|
// timed-out login followed by `memwal_login` in the same process would
|
|
162
176
|
// otherwise replace the only copy of a key the browser may already have
|
|
163
177
|
// paid to register.
|
|
164
|
-
const
|
|
178
|
+
const onDisk = reusablePendingLogin(cfg.relayerUrl);
|
|
179
|
+
const discarded = opts.freshKey ? onDisk : null;
|
|
180
|
+
const reusable = discarded ? null : onDisk;
|
|
165
181
|
if (reusable) {
|
|
166
182
|
log.info("login.pending.reused", {
|
|
167
183
|
publicKey: reusable.delegatePublicKeyHex,
|
|
168
184
|
createdAt: reusable.createdAt,
|
|
169
185
|
});
|
|
170
186
|
}
|
|
187
|
+
if (discarded) {
|
|
188
|
+
log.warn("login.pending.discarded", {
|
|
189
|
+
publicKey: discarded.delegatePublicKeyHex,
|
|
190
|
+
address: discarded.delegateAddress,
|
|
191
|
+
createdAt: discarded.createdAt,
|
|
192
|
+
});
|
|
193
|
+
note(`Minting a fresh delegate key and abandoning the one left by the last ` +
|
|
194
|
+
`unfinished sign-in:\n` +
|
|
195
|
+
` public key: ${discarded.delegatePublicKeyHex}\n` +
|
|
196
|
+
` address: ${discarded.delegateAddress}\n` +
|
|
197
|
+
`If you approved that key in your wallet, nothing will use it again — ` +
|
|
198
|
+
`remove it from the dashboard.`);
|
|
199
|
+
try {
|
|
200
|
+
opts.onDiscarded?.({
|
|
201
|
+
publicKey: discarded.delegatePublicKeyHex,
|
|
202
|
+
address: discarded.delegateAddress,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
/* caller errors don't break the flow */
|
|
207
|
+
}
|
|
208
|
+
}
|
|
171
209
|
const keypair = reusable
|
|
172
210
|
? {
|
|
173
211
|
privateKeyHex: reusable.delegatePrivateKey,
|
|
@@ -175,6 +213,8 @@ export async function loginFlow(opts = {}) {
|
|
|
175
213
|
suiAddress: reusable.delegateAddress,
|
|
176
214
|
}
|
|
177
215
|
: await generateKeypair();
|
|
216
|
+
if (superseded())
|
|
217
|
+
throw loginSupersededError();
|
|
178
218
|
// Write-ahead (WALM-332). From the moment anything can hand this public key
|
|
179
219
|
// to a browser, the private half has to survive losing this process — the
|
|
180
220
|
// browser's on-chain `add_delegate_key` costs gas and cannot be undone, and
|
|
@@ -230,6 +270,10 @@ export async function loginFlow(opts = {}) {
|
|
|
230
270
|
// The callback POST *body* field stays `state` (localhost POST, never
|
|
231
271
|
// part of a redirect_uri, so no collision there).
|
|
232
272
|
`&connectState=${stateToken}`;
|
|
273
|
+
if (superseded()) {
|
|
274
|
+
server.close();
|
|
275
|
+
throw loginSupersededError();
|
|
276
|
+
}
|
|
233
277
|
note(`Opening browser to authorize this MCP client...`);
|
|
234
278
|
note(`If your browser doesn't open, visit: ${connectUrl}`);
|
|
235
279
|
log.info("login.start", { port, publicKey: keypair.publicKeyHex, label: cfg.label });
|
|
@@ -254,16 +298,49 @@ export async function loginFlow(opts = {}) {
|
|
|
254
298
|
// server-side prevents callers from bypassing the consent-page preflight
|
|
255
299
|
// and posting a valid-looking callback directly.
|
|
256
300
|
let preflightVerified = false;
|
|
301
|
+
let retired = false;
|
|
302
|
+
let timer;
|
|
303
|
+
// One winner. The timeout, an abort from a newer `freshKey` login, and the
|
|
304
|
+
// callback all try to finish this listener. Claiming first closes the
|
|
305
|
+
// others out so a late callback cannot saveCreds over the replacement key.
|
|
306
|
+
const claim = () => {
|
|
307
|
+
if (retired)
|
|
308
|
+
return false;
|
|
309
|
+
retired = true;
|
|
310
|
+
if (timer)
|
|
311
|
+
clearTimeout(timer);
|
|
312
|
+
return true;
|
|
313
|
+
};
|
|
257
314
|
const done = new Promise((resolve) => {
|
|
258
|
-
const
|
|
315
|
+
const retire = (err) => {
|
|
316
|
+
if (!claim())
|
|
317
|
+
return;
|
|
318
|
+
error = err;
|
|
319
|
+
server.close();
|
|
320
|
+
resolve();
|
|
321
|
+
};
|
|
322
|
+
timer = setTimeout(() => {
|
|
259
323
|
if (!creds) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
324
|
+
retire(new Error(`Login timed out after ${cfg.timeoutMs}ms. A restart retries the same key. ` +
|
|
325
|
+
`If the wallet keeps rejecting it, call memwal_login with freshKey: true. ` +
|
|
326
|
+
`That mints a new key and closes the sign-in already open; remove the old ` +
|
|
327
|
+
`one from the dashboard if you already approved it on-chain.`));
|
|
263
328
|
}
|
|
264
|
-
}, cfg.timeoutMs)
|
|
265
|
-
|
|
329
|
+
}, cfg.timeoutMs);
|
|
330
|
+
timer.unref?.();
|
|
331
|
+
if (cfg.signal) {
|
|
332
|
+
const onAbort = () => retire(loginSupersededError());
|
|
333
|
+
if (cfg.signal.aborted)
|
|
334
|
+
onAbort();
|
|
335
|
+
else
|
|
336
|
+
cfg.signal.addEventListener("abort", onAbort, { once: true });
|
|
337
|
+
}
|
|
266
338
|
server.on("request", async (req, res) => {
|
|
339
|
+
if (retired) {
|
|
340
|
+
res.writeHead(409, { "content-type": "text/html" });
|
|
341
|
+
res.end(FAIL_HTML_TEMPLATE("This sign-in was replaced by a newer login."));
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
267
344
|
// CORS — only the dashboard origin we control may POST. `*` would
|
|
268
345
|
// let any web page on the internet talk to this localhost port.
|
|
269
346
|
res.setHeader("access-control-allow-origin", expectedOrigin);
|
|
@@ -376,6 +453,13 @@ export async function loginFlow(opts = {}) {
|
|
|
376
453
|
// closing after success, but this also rejects a duplicate
|
|
377
454
|
// callback that races during the response-flush window.
|
|
378
455
|
preflightVerified = false;
|
|
456
|
+
// After `readBody` awaits, a newer freshKey login may already
|
|
457
|
+
// own the write-ahead record. Losing the claim must not save.
|
|
458
|
+
if (!claim()) {
|
|
459
|
+
res.writeHead(409, { "content-type": "text/html" });
|
|
460
|
+
res.end(FAIL_HTML_TEMPLATE("This sign-in was replaced by a newer login."));
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
379
463
|
creds = {
|
|
380
464
|
delegatePrivateKey: keypair.privateKeyHex,
|
|
381
465
|
delegatePublicKeyHex: keypair.publicKeyHex,
|
|
@@ -437,6 +521,7 @@ export async function loginFlow(opts = {}) {
|
|
|
437
521
|
return creds;
|
|
438
522
|
}
|
|
439
523
|
let inflightLogin = null;
|
|
524
|
+
let inflightAbort = null;
|
|
440
525
|
/**
|
|
441
526
|
* Start a login flow, or join one already in progress in this process.
|
|
442
527
|
* Concurrent `memwal_login` calls share the same listener and URL so a
|
|
@@ -449,8 +534,14 @@ export function startOrReuseLoginFlow(opts = {}, onSuccess,
|
|
|
449
534
|
* URL and returned. Without this the failure is unobservable — see the
|
|
450
535
|
* catch below. */
|
|
451
536
|
onFailure) {
|
|
452
|
-
if (
|
|
537
|
+
if (opts.freshKey) {
|
|
538
|
+
resetInflightLogin();
|
|
539
|
+
}
|
|
540
|
+
else if (inflightLogin) {
|
|
453
541
|
return inflightLogin;
|
|
542
|
+
}
|
|
543
|
+
const abort = new AbortController();
|
|
544
|
+
inflightAbort = abort;
|
|
454
545
|
let resolveUrl;
|
|
455
546
|
let rejectUrl;
|
|
456
547
|
const url = new Promise((resolve, reject) => {
|
|
@@ -460,6 +551,7 @@ onFailure) {
|
|
|
460
551
|
const userOnUrl = opts.onUrl;
|
|
461
552
|
const result = loginFlow({
|
|
462
553
|
...opts,
|
|
554
|
+
signal: abort.signal,
|
|
463
555
|
onUrl: (connectUrl) => {
|
|
464
556
|
resolveUrl(connectUrl);
|
|
465
557
|
try {
|
|
@@ -476,6 +568,10 @@ onFailure) {
|
|
|
476
568
|
// failure twice for one flow.
|
|
477
569
|
result.catch((err) => {
|
|
478
570
|
rejectUrl(err);
|
|
571
|
+
// The replacement login is the one the caller was just handed. The
|
|
572
|
+
// old timeout and its onFailure must not talk over that.
|
|
573
|
+
if (isLoginSuperseded(err))
|
|
574
|
+
return;
|
|
479
575
|
const msg = err instanceof Error ? err.message : String(err);
|
|
480
576
|
// This used to be a `warn` and nothing else, which made a background
|
|
481
577
|
// login failure invisible: `handleLocalLogin` has already returned the
|
|
@@ -524,8 +620,12 @@ onFailure) {
|
|
|
524
620
|
});
|
|
525
621
|
return session;
|
|
526
622
|
}
|
|
527
|
-
/** Drop the in-flight handle
|
|
623
|
+
/** Drop the in-flight handle and close its listener. A late callback or
|
|
624
|
+
* timeout on that listener must not save credentials or clear the pending
|
|
625
|
+
* record a newer login just wrote. */
|
|
528
626
|
export function resetInflightLogin() {
|
|
627
|
+
inflightAbort?.abort();
|
|
628
|
+
inflightAbort = null;
|
|
529
629
|
inflightLogin = null;
|
|
530
630
|
}
|
|
531
631
|
//# sourceMappingURL=login.js.map
|
package/dist/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared automatic-memory policy — the MCP client's copy.
|
|
3
|
+
*
|
|
4
|
+
* Consumed by `instructions.ts` (the MCP `instructions` field, which is the
|
|
5
|
+
* only proactive-usage channel that survives lazy tool loading) and by
|
|
6
|
+
* `auth-required.ts` (the cold-start / signed-out `tools/list`).
|
|
7
|
+
*
|
|
8
|
+
* WALM-642: before this module the secret rules did not exist at all, and the
|
|
9
|
+
* save guidance was written out three times — here, in the plugin hooks, and in
|
|
10
|
+
* the relayer sidecar's tool descriptions — with nothing tying them together.
|
|
11
|
+
* A preference stated next to a password was forwarded whole.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The secret-exclusion and do-not-save rules, stated verbatim by every
|
|
15
|
+
* automatic-save surface.
|
|
16
|
+
*
|
|
17
|
+
* These are model-facing rules, not enforcement. The programmatic backstop is
|
|
18
|
+
* the redactor in the relayer sidecar's write path
|
|
19
|
+
* (services/server/scripts/mcp/tools/redaction.ts), which runs before any text
|
|
20
|
+
* reaches the SDK.
|
|
21
|
+
*/
|
|
22
|
+
export declare const SECRET_EXCLUSION_RULES: string;
|
|
23
|
+
/**
|
|
24
|
+
* One-line form, for surfaces with no room for the full block (a per-turn
|
|
25
|
+
* nudge, a tool description tail). It is a reminder of the block above, never a
|
|
26
|
+
* replacement for it: any surface that drives an automatic save states the full
|
|
27
|
+
* `SECRET_EXCLUSION_RULES`.
|
|
28
|
+
*/
|
|
29
|
+
export declare const SECRET_EXCLUSION_SUMMARY: string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to save unprompted is the user's standing choice, and this is the
|
|
32
|
+
* sentence that says so. A direct request ("remember that ...") is never gated
|
|
33
|
+
* by it — the gate is only on saving something the user did not ask you to save.
|
|
34
|
+
*/
|
|
35
|
+
export declare const AUTO_SAVE_OPT_IN_RULE: string;
|
|
36
|
+
/** Bumped whenever the text above changes, so a stale copy is identifiable. */
|
|
37
|
+
export declare const MEMORY_POLICY_VERSION = "2026-09-17.2";
|
|
38
|
+
//# sourceMappingURL=memory-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-policy.d.ts","sourceRoot":"","sources":["../src/memory-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuBH;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,QAWxB,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAI1B,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAMvB,CAAC;AAEZ,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared automatic-memory policy — the MCP client's copy.
|
|
3
|
+
*
|
|
4
|
+
* Consumed by `instructions.ts` (the MCP `instructions` field, which is the
|
|
5
|
+
* only proactive-usage channel that survives lazy tool loading) and by
|
|
6
|
+
* `auth-required.ts` (the cold-start / signed-out `tools/list`).
|
|
7
|
+
*
|
|
8
|
+
* WALM-642: before this module the secret rules did not exist at all, and the
|
|
9
|
+
* save guidance was written out three times — here, in the plugin hooks, and in
|
|
10
|
+
* the relayer sidecar's tool descriptions — with nothing tying them together.
|
|
11
|
+
* A preference stated next to a password was forwarded whole.
|
|
12
|
+
*/
|
|
13
|
+
// ─── memwal:policy-block:start ───────────────────────────────────────────────
|
|
14
|
+
// WALM-642. The lines between these two markers are BYTE-IDENTICAL in three
|
|
15
|
+
// files that cannot import one another, because the three packages have no
|
|
16
|
+
// workspace link:
|
|
17
|
+
//
|
|
18
|
+
// packages/mcp/src/memory-policy.ts — MCP client: initialize
|
|
19
|
+
// instructions + the
|
|
20
|
+
// cold-start tools/list
|
|
21
|
+
// packages/mcp/plugin/scripts/lib/memory-policy.mjs — plugin hooks: the
|
|
22
|
+
// guidance injected at
|
|
23
|
+
// SessionStart /
|
|
24
|
+
// UserPromptSubmit /
|
|
25
|
+
// PostToolUse
|
|
26
|
+
// services/server/scripts/mcp/tools/memory-policy.ts — relayer sidecar: the
|
|
27
|
+
// live tool descriptions
|
|
28
|
+
//
|
|
29
|
+
// The duplication is deliberate and pinned: `memory-policy-sync` tests on both
|
|
30
|
+
// sides extract this block from each file and compare the bytes, so editing one
|
|
31
|
+
// copy fails the suite until the other two match. Edit the block, then copy it
|
|
32
|
+
// verbatim — markers included — into the other two files.
|
|
33
|
+
/**
|
|
34
|
+
* The secret-exclusion and do-not-save rules, stated verbatim by every
|
|
35
|
+
* automatic-save surface.
|
|
36
|
+
*
|
|
37
|
+
* These are model-facing rules, not enforcement. The programmatic backstop is
|
|
38
|
+
* the redactor in the relayer sidecar's write path
|
|
39
|
+
* (services/server/scripts/mcp/tools/redaction.ts), which runs before any text
|
|
40
|
+
* reaches the SDK.
|
|
41
|
+
*/
|
|
42
|
+
export const SECRET_EXCLUSION_RULES = [
|
|
43
|
+
"NEVER save a credential, even when it sits next to something worth saving: passwords,",
|
|
44
|
+
"API keys, access or refresh tokens, private keys, seed or recovery phrases, authorization",
|
|
45
|
+
"headers, session cookies, and connection strings or URLs that embed a user:password.",
|
|
46
|
+
"When a message mixes a preference with a credential, save the preference alone and leave",
|
|
47
|
+
"the credential out; never store the line verbatim.",
|
|
48
|
+
"If the user says not to save something ('don't save this', 'off the record', or the same",
|
|
49
|
+
"in any language), do not save it, and do not save a paraphrase of it either.",
|
|
50
|
+
"Do not store quoted or pasted third-party material — log excerpts, code, articles, other",
|
|
51
|
+
"people's messages — as if it were a fact about this user. Save only what the user is",
|
|
52
|
+
"telling you about themselves or their work, in your own words.",
|
|
53
|
+
].join(" ");
|
|
54
|
+
/**
|
|
55
|
+
* One-line form, for surfaces with no room for the full block (a per-turn
|
|
56
|
+
* nudge, a tool description tail). It is a reminder of the block above, never a
|
|
57
|
+
* replacement for it: any surface that drives an automatic save states the full
|
|
58
|
+
* `SECRET_EXCLUSION_RULES`.
|
|
59
|
+
*/
|
|
60
|
+
export const SECRET_EXCLUSION_SUMMARY = [
|
|
61
|
+
"Never save passwords, keys, tokens or other credentials — not even beside a fact worth",
|
|
62
|
+
"saving; honour an explicit 'do not save this'; never store pasted third-party content as",
|
|
63
|
+
"a fact about the user.",
|
|
64
|
+
].join(" ");
|
|
65
|
+
/**
|
|
66
|
+
* Whether to save unprompted is the user's standing choice, and this is the
|
|
67
|
+
* sentence that says so. A direct request ("remember that ...") is never gated
|
|
68
|
+
* by it — the gate is only on saving something the user did not ask you to save.
|
|
69
|
+
*/
|
|
70
|
+
export const AUTO_SAVE_OPT_IN_RULE = [
|
|
71
|
+
"Whether to save things the user did not ask you to save is their standing choice, made once",
|
|
72
|
+
"in a terminal. When automatic memory is on, save durable facts as they state them; when it is",
|
|
73
|
+
"off, save only what they ask you to save in that turn. That question is put by `memwal-mcp",
|
|
74
|
+
"login` and set by `memwal-mcp auto-save on|off` — never ask the user to answer it in chat,",
|
|
75
|
+
"and never answer it on their behalf.",
|
|
76
|
+
].join(" ");
|
|
77
|
+
/** Bumped whenever the text above changes, so a stale copy is identifiable. */
|
|
78
|
+
export const MEMORY_POLICY_VERSION = "2026-09-17.2";
|
|
79
|
+
// ─── memwal:policy-block:end ─────────────────────────────────────────────────
|
|
80
|
+
//# sourceMappingURL=memory-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-policy.js","sourceRoot":"","sources":["../src/memory-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,kBAAkB;AAClB,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,0DAA0D;AAE1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,uFAAuF;IACvF,2FAA2F;IAC3F,sFAAsF;IACtF,0FAA0F;IAC1F,oDAAoD;IACpD,0FAA0F;IAC1F,8EAA8E;IAC9E,0FAA0F;IAC1F,sFAAsF;IACtF,gEAAgE;CACnE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,wFAAwF;IACxF,0FAA0F;IAC1F,wBAAwB;CAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,6FAA6F;IAC7F,+FAA+F;IAC/F,4FAA4F;IAC5F,4FAA4F;IAC5F,sCAAsC;CACzC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AACpD,gFAAgF"}
|
package/dist/messages.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface LoginPromptInfo {
|
|
|
23
23
|
credentialsPath: string;
|
|
24
24
|
/** True when credentials already exist, so signing in REPLACES them. */
|
|
25
25
|
signedIn: boolean;
|
|
26
|
+
/** Set when `freshKey` dropped a pending delegate key. The write-ahead
|
|
27
|
+
* file no longer has it, so the prompt is the place that names it. */
|
|
28
|
+
discardedKey?: {
|
|
29
|
+
publicKey: string;
|
|
30
|
+
address: string;
|
|
31
|
+
};
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* The `memwal_login` tool result, for both modes.
|
|
@@ -62,9 +68,10 @@ export declare function loginSuccessNotification(info: LoginSuccessInfo): string
|
|
|
62
68
|
* can prefix unconditionally.
|
|
63
69
|
*
|
|
64
70
|
* The advice splits on whether the user approved the wallet step. If they did,
|
|
65
|
-
* the key is on-chain and in the write-ahead record (WALM-332)
|
|
66
|
-
*
|
|
67
|
-
*
|
|
71
|
+
* the key is on-chain and in the write-ahead record (WALM-332). A restart
|
|
72
|
+
* retries that same key. `freshKey: true` mints a new one and closes the
|
|
73
|
+
* sign-in that is already open. A key already approved on-chain has to be
|
|
74
|
+
* removed from the dashboard; nothing else will use it.
|
|
68
75
|
*/
|
|
69
76
|
export declare function loginFailureNotice(reason: string | null): string;
|
|
70
77
|
//# sourceMappingURL=messages.d.ts.map
|
package/dist/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;6EAEyE;IACzE,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;6EAEyE;IACzE,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB;0EACsE;IACtE,YAAY,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAqCzD;AAOD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAajE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAKvE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAkBhE"}
|
package/dist/messages.js
CHANGED
|
@@ -40,6 +40,15 @@ export function loginPrompt(info) {
|
|
|
40
40
|
`**Note:** you are already signed in. Completing this replaces the stored delegate key at \`${info.credentialsPath}\` with the new wallet's.`,
|
|
41
41
|
]
|
|
42
42
|
: []),
|
|
43
|
+
...(info.discardedKey
|
|
44
|
+
? [
|
|
45
|
+
``,
|
|
46
|
+
`**Abandoned key:** this sign-in replaced an unfinished delegate key.`,
|
|
47
|
+
`Public key: \`${info.discardedKey.publicKey}\``,
|
|
48
|
+
`Address: \`${info.discardedKey.address}\``,
|
|
49
|
+
`If you already approved that key on-chain, remove it from the dashboard.`,
|
|
50
|
+
]
|
|
51
|
+
: []),
|
|
43
52
|
``,
|
|
44
53
|
`_The login link stays valid for 5 minutes. If it expires, call \`memwal_login\` again to get a fresh URL._`,
|
|
45
54
|
].join("\n");
|
|
@@ -92,9 +101,10 @@ export function loginSuccessNotification(info) {
|
|
|
92
101
|
* can prefix unconditionally.
|
|
93
102
|
*
|
|
94
103
|
* The advice splits on whether the user approved the wallet step. If they did,
|
|
95
|
-
* the key is on-chain and in the write-ahead record (WALM-332)
|
|
96
|
-
*
|
|
97
|
-
*
|
|
104
|
+
* the key is on-chain and in the write-ahead record (WALM-332). A restart
|
|
105
|
+
* retries that same key. `freshKey: true` mints a new one and closes the
|
|
106
|
+
* sign-in that is already open. A key already approved on-chain has to be
|
|
107
|
+
* removed from the dashboard; nothing else will use it.
|
|
98
108
|
*/
|
|
99
109
|
export function loginFailureNotice(reason) {
|
|
100
110
|
if (!reason)
|
|
@@ -105,8 +115,9 @@ export function loginFailureNotice(reason) {
|
|
|
105
115
|
`Reason: ${reason}`,
|
|
106
116
|
"",
|
|
107
117
|
"If you approved the wallet step, that key is registered and saved on this machine.",
|
|
108
|
-
"
|
|
109
|
-
"
|
|
118
|
+
"A restart retries the same key. Call",
|
|
119
|
+
"`memwal_login` with `freshKey: true` to mint a new one, and remove it from the",
|
|
120
|
+
"dashboard if you already approved the old key on-chain.",
|
|
110
121
|
"",
|
|
111
122
|
"If you did not approve it, sign in again and open the new link straight away. A",
|
|
112
123
|
"retry only helps once the MCP client is left running through the wallet prompt.",
|
package/dist/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,IAAqB;IAC7C,OAAO;QACH,4DAA4D;QAC5D,EAAE;QACF,YAAY,IAAI,CAAC,GAAG,EAAE;QACtB,EAAE;QACF,KAAK;QACL,IAAI,CAAC,GAAG;QACR,KAAK;QACL,EAAE;QACF,8CAA8C,IAAI,CAAC,GAAG,GAAG;QACzD,EAAE;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,wCAAwC;QACxC,EAAE;QACF,2EAA2E;QAC3E,2FAA2F;QAC3F,qIAAqI,IAAI,CAAC,eAAe,IAAI;QAC7J,GAAG,CAAC,IAAI,CAAC,QAAQ;YACb,CAAC,CAAC;gBACI,EAAE;gBACF,8FAA8F,IAAI,CAAC,eAAe,2BAA2B;aAChJ;YACH,CAAC,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,IAAI,CAAC,YAAY;YACjB,CAAC,CAAC;gBACI,EAAE;gBACF,sEAAsE;gBACtE,iBAAiB,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI;gBAChD,cAAc,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI;gBAC3C,0EAA0E;aAC7E;YACH,CAAC,CAAC,EAAE,CAAC;QACT,EAAE;QACF,4GAA4G;KAC/G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,uEAAuE;AACvE,SAAS,OAAO,CAAC,EAAU;IACvB,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACrD,OAAO;QACH,+BAA+B;QAC/B,EAAE;QACF,aAAa,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACtC,aAAa,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;QAC5C,aAAa,IAAI,CAAC,eAAe,EAAE;QACnC,EAAE;QACF,kEAAkE;QAClE,EAAE;QACF,KAAK;QACL,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC3D,OAAO,CACH,4CAA4C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;QACvE,wBAAwB,IAAI,CAAC,eAAe,GAAG,CAClD,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO;QACH,kFAAkF;QAClF,EAAE;QACF,WAAW,MAAM,EAAE;QACnB,EAAE;QACF,oFAAoF;QACpF,sCAAsC;QACtC,gFAAgF;QAChF,yDAAyD;QACzD,EAAE;QACF,iFAAiF;QACjF,iFAAiF;QACjF,EAAE;QACF,KAAK;QACL,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
|
package/dist/recovery.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface RecoveryResult {
|
|
|
15
15
|
/** Set when a key may be registered on-chain but is not usable locally. */
|
|
16
16
|
strandedPublicKey?: string;
|
|
17
17
|
credentials?: MemWalCredentials;
|
|
18
|
+
replacementNotice?: string;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* Build the exact string the relayer will rebuild and verify against.
|
package/dist/recovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAWnD,MAAM,MAAM,eAAe;AACvB,2DAA2D;AACzD,YAAY;AACd,uEAAuE;GACrE,WAAW;AACb,mEAAmE;GACjE,YAAY;AACd,4EAA4E;GAC1E,UAAU;AACZ,wEAAwE;GACtE,aAAa,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA2BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAGT;AAED,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,QAAgD,CAAC;AAkE/E;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC,CAoFnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAmC/E"}
|
package/dist/recovery.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* back the identity the key already proves.
|
|
12
12
|
*/
|
|
13
13
|
import { randomUUID, createHash } from "node:crypto";
|
|
14
|
-
import { loadCreds, saveCreds, loadPendingLogin, clearPendingLogin } from "./auth.js";
|
|
14
|
+
import { loadCreds, saveCreds, loadPendingLogin, clearPendingLogin, formatReplacementNotice, } from "./auth.js";
|
|
15
15
|
import { signMessage } from "./crypto.js";
|
|
16
16
|
import { log } from "./logger.js";
|
|
17
17
|
/** Same wall-clock budget as a normal cold-start probe: recovery must never
|
|
@@ -146,8 +146,7 @@ export async function recoverPendingLogin() {
|
|
|
146
146
|
// again, after removing the key from the dashboard if it was already
|
|
147
147
|
// registered — is worth giving. During a transient upstream
|
|
148
148
|
// failure that advice is worse than silence: the key is still good, and
|
|
149
|
-
// `unavailable` correctly says the next start retries it
|
|
150
|
-
// from the user.
|
|
149
|
+
// `unavailable` correctly says the next start retries it.
|
|
151
150
|
//
|
|
152
151
|
// So only 401/403 is a denial. A 503 carrying
|
|
153
152
|
// `x-auth-error: AUTH_UPSTREAM_UNAVAILABLE` is Sui RPC being down, and
|
|
@@ -158,12 +157,11 @@ export async function recoverPendingLogin() {
|
|
|
158
157
|
res.authError !== AUTH_UPSTREAM_UNAVAILABLE;
|
|
159
158
|
const outcome = denied ? "rejected" : "unavailable";
|
|
160
159
|
// Non-destructive either way. A 401 is ambiguous even when it IS a
|
|
161
|
-
// denial:
|
|
162
|
-
//
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
// always left for its TTL to retire.
|
|
160
|
+
// denial: a genuinely registered key is refused when the request has
|
|
161
|
+
// no x-account-id (services/server/src/auth.rs — "x-account-id is
|
|
162
|
+
// required for delegate-key authentication"). Clearing here would
|
|
163
|
+
// destroy a recoverable key, so the record is always left for its
|
|
164
|
+
// TTL to retire.
|
|
167
165
|
log.warn(`login.pending.${outcome}`, {
|
|
168
166
|
publicKey: pending.delegatePublicKeyHex,
|
|
169
167
|
status: res.status,
|
|
@@ -183,13 +181,17 @@ export async function recoverPendingLogin() {
|
|
|
183
181
|
createdAt: new Date().toISOString(),
|
|
184
182
|
version: 1,
|
|
185
183
|
};
|
|
186
|
-
saveCreds(creds);
|
|
184
|
+
const saved = saveCreds(creds);
|
|
187
185
|
clearPendingLogin();
|
|
188
186
|
log.info("login.pending.recovered", {
|
|
189
187
|
accountId: creds.accountId,
|
|
190
188
|
delegateAddress: creds.delegateAddress,
|
|
191
189
|
});
|
|
192
|
-
return {
|
|
190
|
+
return {
|
|
191
|
+
outcome: "recovered",
|
|
192
|
+
credentials: creds,
|
|
193
|
+
replacementNotice: formatReplacementNotice(saved, creds.accountId) ?? undefined,
|
|
194
|
+
};
|
|
193
195
|
}
|
|
194
196
|
/**
|
|
195
197
|
* The line to show the user when a stranded key could not be reclaimed.
|
|
@@ -217,10 +219,10 @@ export function formatStrandedLoginNotice(result) {
|
|
|
217
219
|
lines.push(`You have since signed in again, so your current credentials are fine.`, `Revoke the key above from the dashboard if you don't recognise it.`);
|
|
218
220
|
}
|
|
219
221
|
else if (result.outcome === "unavailable") {
|
|
220
|
-
lines.push(`The relayer could not be reached to check. This will be retried on the`, `next start —
|
|
222
|
+
lines.push(`The relayer could not be reached to check. This will be retried on the`, `next start. If sign-in keeps failing, run`, `\`npx -y @mysten-incubation/memwal-mcp login\`, or call \`memwal_login\` with`, `\`freshKey: true\`: both mint a new key instead of waiting on this one.`, `That abandons the key above, so if you approved it on-chain, remove it`, `from the dashboard — nothing will use it again.`);
|
|
221
223
|
}
|
|
222
224
|
else {
|
|
223
|
-
lines.push(`The relayer did not accept it. If you never approved the wallet step, run`, `\`memwal_login\`: it reuses this key. If you did, remove the key above from`, `the dashboard first and then run \`memwal_login\`, because the wallet step`, `cannot register a key that is already there
|
|
225
|
+
lines.push(`The relayer did not accept it. If you never approved the wallet step, run`, `\`memwal_login\`: it reuses this key. If you did, remove the key above from`, `the dashboard first and then run \`memwal_login\`, because the wallet step`, `cannot register a key that is already there.`);
|
|
224
226
|
}
|
|
225
227
|
return lines.join("\n");
|
|
226
228
|
}
|