@mysten-incubation/memwal-mcp 0.0.14-dev.4 → 0.0.14-dev.6

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,129 @@
1
+ /**
2
+ * The automatic-memory consent question (WALM-642).
3
+ *
4
+ * Asked at interactive login and NOWHERE else. Deliberately not an MCP tool,
5
+ * not a tool description, not an instruction, and not anything a model can
6
+ * reach: a model answering on the user's behalf is not consent, and an
7
+ * agent-shaped surface for this question would be exactly that. The only caller
8
+ * is `main()` in index.ts, behind `process.stdin.isTTY`.
9
+ *
10
+ * Login is the gate because MemWal is unusable without it, so every real user
11
+ * passes through it once, and it is already a moment that requires a terminal.
12
+ *
13
+ * On the wording — it is the substance of this change, not decoration:
14
+ *
15
+ * - It names the consequence ("writes it to your memory without asking each
16
+ * time"), not the feature. Someone should be able to picture what happens
17
+ * to them, in their own session, from reading it.
18
+ * - Permanence leads, because it is the fact that changes the answer. Walrus
19
+ * is immutable: you can stop saving new memories but you cannot take back
20
+ * one already saved. Burying that under "we value your privacy" would make
21
+ * this a cookie banner, which it is not.
22
+ * - The redaction claim is deliberately hedged. `redaction.ts` documents real
23
+ * residual gaps — an unlabelled hex secret, a bare BIP-39 word run — so
24
+ * "safety net, not a guarantee" is the accurate claim and must stay. Saying
25
+ * more would be selling a promise the code does not make.
26
+ * - Declining is free and is stated as a normal choice, not a warning. A "no"
27
+ * is recorded once and never asked again.
28
+ */
29
+ import { createInterface } from "node:readline";
30
+ /** The prompt body, everything above the input line. */
31
+ export const CONSENT_PROMPT = [
32
+ "",
33
+ "MemWal can save things about you automatically.",
34
+ "",
35
+ "What that means: when you state a preference, a decision, or a setting in",
36
+ 'chat — "I prefer pnpm", "we deploy from dev", "the relayer is at X" —',
37
+ "MemWal writes it to your memory without asking each time, so it is there",
38
+ "in your next session and in every other client you use.",
39
+ "",
40
+ "Before you choose:",
41
+ "",
42
+ " - Saved memories are permanent. They go to Walrus, which is immutable",
43
+ " storage. You can stop saving new ones at any time, but you cannot",
44
+ " delete one that is already saved.",
45
+ " - They are encrypted to your account. Only your delegate key reads them.",
46
+ " - MemWal strips obvious credentials — API keys, tokens, passwords,",
47
+ " private keys — before saving. Treat that as a safety net, not a",
48
+ " guarantee: do not paste secrets into a session with this on.",
49
+ "",
50
+ " [1] Save automatically recommended, this is what MemWal is for",
51
+ ' [2] Only save when I ask nothing is saved unless you say "remember this"',
52
+ "",
53
+ "Change this any time with `memwal-mcp auto-save on|off`.",
54
+ "See what is stored with `memwal_recall`.",
55
+ "",
56
+ ].join("\n");
57
+ /** The input line. Enter alone takes the recommended option. */
58
+ export const CONSENT_QUESTION = "Your choice [1/2]: ";
59
+ /** What to say when the answer is neither 1 nor 2. */
60
+ export const CONSENT_REPROMPT = "Please answer 1 or 2 (or press Enter for 1).";
61
+ /**
62
+ * Map one line of input to an answer.
63
+ *
64
+ * Empty (a bare Enter) accepts option 1. Anything that is not 1 or 2 returns
65
+ * `null`, which means re-ask — never "assume the recommended one", because a
66
+ * typo is not an answer to a question about permanent storage.
67
+ */
68
+ export function interpretConsentAnswer(raw) {
69
+ const v = raw.trim().toLowerCase();
70
+ if (v === "")
71
+ return true;
72
+ if (v === "1")
73
+ return true;
74
+ if (v === "2")
75
+ return false;
76
+ return null;
77
+ }
78
+ /**
79
+ * Ask the question on a terminal and resolve to the answer.
80
+ *
81
+ * Resolves `null` — meaning "no answer given" — if the input stream ends first
82
+ * (Ctrl-D, a closed pipe, a killed terminal). The caller leaves the state unset
83
+ * in that case and asks again next time rather than recording a choice the user
84
+ * never made.
85
+ *
86
+ * Streams are injected so this is testable without a pty; `main()` passes the
87
+ * real stdin and stderr. Output goes to stderr because stdout belongs to the
88
+ * MCP protocol on every other path in this package.
89
+ */
90
+ export async function askAutoSaveConsent(opts) {
91
+ // A prompt with nobody in front of it is a hang, not a question. The
92
+ // caller already checks this; the second check is here because the cost of
93
+ // getting it wrong is an MCP server that never finishes starting.
94
+ if (opts.isTTY === false)
95
+ return null;
96
+ opts.output.write(`${CONSENT_PROMPT}\n`);
97
+ const rl = createInterface({ input: opts.input, terminal: false });
98
+ try {
99
+ opts.output.write(CONSENT_QUESTION);
100
+ // The interface's async iterator, rather than a promise per `line`
101
+ // event: attaching a fresh listener after each answer drops any line
102
+ // that arrived while nothing was listening, which deadlocks the re-ask
103
+ // path the moment input is buffered rather than typed.
104
+ for await (const line of rl) {
105
+ const answer = interpretConsentAnswer(line);
106
+ if (answer !== null)
107
+ return answer;
108
+ opts.output.write(`${CONSENT_REPROMPT}\n`);
109
+ opts.output.write(CONSENT_QUESTION);
110
+ }
111
+ // Exhausted without an answer: Ctrl-D, a closed pipe, a killed
112
+ // terminal. Not a choice, and not recorded as one.
113
+ opts.output.write("\n");
114
+ return null;
115
+ }
116
+ finally {
117
+ rl.close();
118
+ }
119
+ }
120
+ /** What is printed once the answer is in. */
121
+ export function consentOutcomeNotice(enabled, path) {
122
+ return enabled
123
+ ? "Automatic memory is ON. MemWal will save durable facts as you state them. " +
124
+ `Turn it off any time with \`memwal-mcp auto-save off\`. (${path})`
125
+ : "Automatic memory is OFF. Nothing is saved unless you ask for it — " +
126
+ '"remember this" still works, and so does recall. ' +
127
+ `Turn it on any time with \`memwal-mcp auto-save on\`. (${path})`;
128
+ }
129
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,EAAE;IACF,iDAAiD;IACjD,EAAE;IACF,2EAA2E;IAC3E,uEAAuE;IACvE,0EAA0E;IAC1E,yDAAyD;IACzD,EAAE;IACF,oBAAoB;IACpB,EAAE;IACF,yEAAyE;IACzE,uEAAuE;IACvE,uCAAuC;IACvC,4EAA4E;IAC5E,sEAAsE;IACtE,qEAAqE;IACrE,kEAAkE;IAClE,EAAE;IACF,uEAAuE;IACvE,+EAA+E;IAC/E,EAAE;IACF,0DAA0D;IAC1D,0CAA0C;IAC1C,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GACzB,8CAA8C,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAC9C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAKxC;IACG,qEAAqE;IACrE,2EAA2E;IAC3E,kEAAkE;IAClE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;IAEzC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,mEAAmE;QACnE,qEAAqE;QACrE,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QACD,+DAA+D;QAC/D,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,IAAY;IAC/D,OAAO,OAAO;QACV,CAAC,CAAC,4EAA4E;YACxE,4DAA4D,IAAI,GAAG;QACzE,CAAC,CAAC,oEAAoE;YAChE,mDAAmD;YACnD,0DAA0D,IAAI,GAAG,CAAC;AAChF,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Ask the relayer's public `/health` why a call went unanswered: down,
3
+ * unreachable from this machine, configured wrong, or up with one call stuck.
4
+ * Each wants a different next step, so the bridge probes before it answers.
5
+ */
6
+ export type HealthProbe = {
7
+ kind: "ok";
8
+ ms: number;
9
+ version?: string;
10
+ writesUnavailable?: boolean;
11
+ } | {
12
+ kind: "http";
13
+ ms: number;
14
+ status: number;
15
+ } | {
16
+ kind: "unreachable";
17
+ ms: number;
18
+ code: string;
19
+ } | {
20
+ kind: "timeout";
21
+ ms: number;
22
+ };
23
+ /** Override via `MEMWAL_MCP_HEALTH_PROBE_MS`, mostly for tests. */
24
+ export declare function resolveHealthProbeMs(): number;
25
+ /** `GET {baseUrl}/health`, bounded by `timeoutMs`. Never rejects: a probe
26
+ * that fails is itself the answer. */
27
+ export declare function probeRelayerHealth(baseUrl: string, timeoutMs: number): Promise<HealthProbe>;
28
+ /** `health` is the value for a `Relayer health:` line; `verdict` says what
29
+ * it means for the call; `reachable` is whether a plain retry can help. */
30
+ export declare function describeHealthProbe(probe: HealthProbe, relayerUrl: string): {
31
+ health: string;
32
+ verdict: string;
33
+ reachable: boolean;
34
+ };
35
+ //# sourceMappingURL=health-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-probe.d.ts","sourceRoot":"","sources":["../src/health-probe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAQtC,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED;sCACsC;AACtC,wBAAsB,kBAAkB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA6BtB;AAKD;2EAC2E;AAC3E,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAiCzD"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Ask the relayer's public `/health` why a call went unanswered: down,
3
+ * unreachable from this machine, configured wrong, or up with one call stuck.
4
+ * Each wants a different next step, so the bridge probes before it answers.
5
+ */
6
+ const DEFAULT_HEALTH_PROBE_MS = 3_000;
7
+ const MIN_HEALTH_PROBE_MS = 100;
8
+ /** A diagnosis nobody waits a minute for. Also keeps the value inside what
9
+ * `AbortSignal.timeout` accepts. */
10
+ const MAX_HEALTH_PROBE_MS = 60_000;
11
+ /** Override via `MEMWAL_MCP_HEALTH_PROBE_MS`, mostly for tests. */
12
+ export function resolveHealthProbeMs() {
13
+ const raw = process.env.MEMWAL_MCP_HEALTH_PROBE_MS;
14
+ if (!raw)
15
+ return DEFAULT_HEALTH_PROBE_MS;
16
+ const n = Math.floor(Number(raw));
17
+ if (!Number.isFinite(n) || n < MIN_HEALTH_PROBE_MS)
18
+ return DEFAULT_HEALTH_PROBE_MS;
19
+ return Math.min(n, MAX_HEALTH_PROBE_MS);
20
+ }
21
+ /** `GET {baseUrl}/health`, bounded by `timeoutMs`. Never rejects: a probe
22
+ * that fails is itself the answer. */
23
+ export async function probeRelayerHealth(baseUrl, timeoutMs) {
24
+ const started = Date.now();
25
+ let signal;
26
+ try {
27
+ // Inside the `try`: `AbortSignal.timeout` throws on a value it
28
+ // cannot take, and this function must not reject.
29
+ signal = AbortSignal.timeout(timeoutMs);
30
+ const res = await fetch(`${baseUrl.replace(/\/+$/, "")}/health`, { signal });
31
+ const ms = Date.now() - started;
32
+ if (!res.ok) {
33
+ await res.body?.cancel();
34
+ return { kind: "http", ms, status: res.status };
35
+ }
36
+ const body = (await res.json().catch(() => null));
37
+ const version = typeof body?.version === "string" ? body.version : undefined;
38
+ // `/health` answers 200 while writes are paused or Postgres is
39
+ // full; "ok" alone would hide the cause of a failed write.
40
+ const writesUnavailable = body?.write_ready === false || body?.writes === "paused";
41
+ return { kind: "ok", ms, version, ...(writesUnavailable ? { writesUnavailable } : {}) };
42
+ }
43
+ catch (err) {
44
+ const ms = Date.now() - started;
45
+ if (signal?.aborted)
46
+ return { kind: "timeout", ms };
47
+ const code = err?.cause?.code;
48
+ return { kind: "unreachable", ms, code: typeof code === "string" ? code : "unknown" };
49
+ }
50
+ }
51
+ /** DNS could not find the host: the one cause a user fixes on their side. */
52
+ const UNRESOLVED_CODES = new Set(["ENOTFOUND", "EAI_AGAIN"]);
53
+ /** `health` is the value for a `Relayer health:` line; `verdict` says what
54
+ * it means for the call; `reachable` is whether a plain retry can help. */
55
+ export function describeHealthProbe(probe, relayerUrl) {
56
+ switch (probe.kind) {
57
+ case "ok":
58
+ return {
59
+ health: `ok (${probe.ms}ms${probe.version ? `, v${probe.version}` : ""}` +
60
+ `${probe.writesUnavailable ? ", writes unavailable" : ""})`,
61
+ verdict: "The relayer is up, so this call stalled inside it or its reply was lost on the way back.",
62
+ reachable: true,
63
+ };
64
+ case "http":
65
+ return {
66
+ health: `HTTP ${probe.status} (${probe.ms}ms)`,
67
+ verdict: "The relayer answered but is not healthy.",
68
+ reachable: false,
69
+ };
70
+ case "timeout":
71
+ return {
72
+ health: `no answer within ${(probe.ms / 1000).toFixed(1)}s`,
73
+ verdict: `The relayer at ${relayerUrl} is down, overloaded, or not reachable from this machine.`,
74
+ reachable: false,
75
+ };
76
+ case "unreachable":
77
+ return {
78
+ health: `unreachable (${probe.code})`,
79
+ verdict: UNRESOLVED_CODES.has(probe.code)
80
+ ? `The relayer host in ${relayerUrl} could not be resolved. Check the relayer URL ` +
81
+ "(MEMWAL_SERVER_URL or --relayer) and this machine's network."
82
+ : `The relayer at ${relayerUrl} is down or not reachable from this machine.`,
83
+ reachable: false,
84
+ };
85
+ }
86
+ }
87
+ //# sourceMappingURL=health-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-probe.js","sourceRoot":"","sources":["../src/health-probe.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,8 @@ interface ParsedArgs {
16
16
  webUrl?: string;
17
17
  label?: string;
18
18
  namespace?: string;
19
+ /** `auto-save on|off|status` — the automatic-memory opt-in (WALM-642). */
20
+ autoSave?: "on" | "off" | "status";
19
21
  /** Args parseArgs did not recognise, in the order seen. For a flag
20
22
  * written `--key=value`, only `--key` is recorded — see parseArgs. */
21
23
  unknown: string[];
@@ -26,6 +28,8 @@ export declare function main(argv?: string[]): Promise<void>;
26
28
  * flags parseArgs actually accepts. */
27
29
  export declare function helpText(): string;
28
30
  export { loadCreds, saveCreds, clearCreds, credsPath, resolveCreds, approveProjectCreds, revokeProjectCredsApproval, formatProjectCredsNotice, formatProjectCredsStorageWarning, } from "./auth.js";
31
+ export { isAutoSaveEnabled, isConsentPending, autoSaveStatus, setAutoSave, markConsentPending, publishHookState, settingsPath, hookStatePath, } from "./auto-save.js";
32
+ export { askAutoSaveConsent, interpretConsentAnswer, CONSENT_PROMPT } from "./consent.js";
29
33
  export { loginFlow } from "./login.js";
30
34
  export { runBridge } from "./bridge.js";
31
35
  export type { MemWalCredentials, CredsResolution, ProjectCredsDecision } from "./auth.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,UAAU,UAAU;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB;0EACsE;IACtE,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;2EACuE;IACvE,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAeD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAgGpD;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyUhF;AAMD;wCACwC;AACxC,wBAAgB,QAAQ,IAAI,MAAM,CA4GjC;AAGD,OAAO,EACH,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,GACnC,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,UAAU,UAAU;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB;0EACsE;IACtE,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC;2EACuE;IACvE,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAeD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8GpD;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0YhF;AAkCD;wCACwC;AACxC,wBAAgB,QAAQ,IAAI,MAAM,CAgIjC;AAGD,OAAO,EACH,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,GACnC,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ import { recoverPendingLogin, formatStrandedLoginNotice } from "./recovery.js";
14
14
  import { runAuthRequiredServer } from "./auth-required.js";
15
15
  import { notePendingLoginSuccess, runBridge } from "./bridge.js";
16
16
  import { loginFlow } from "./login.js";
17
+ import { autoSaveStatus, autoSaveSummary, markConsentPending, pendingConsentNotice, publishHookState, setAutoSave, AUTO_SAVE_ENV, } from "./auto-save.js";
18
+ import { askAutoSaveConsent, consentOutcomeNotice } from "./consent.js";
17
19
  import { log, note } from "./logger.js";
18
20
  /** Per-environment URL shortcuts. `--dev`/`--staging`/`--local` set both
19
21
  * relayer + web in one flag. Explicit `--relayer` / `--web-url` override. */
@@ -25,7 +27,7 @@ const ENV_PRESETS = {
25
27
  };
26
28
  /** Bare words that are commands rather than values. An unknown flag must not
27
29
  * swallow one as its argument. */
28
- const POSITIONALS = new Set(["login", "approve-project", "revoke-project"]);
30
+ const POSITIONALS = new Set(["login", "approve-project", "revoke-project", "auto-save", "on", "off", "status"]);
29
31
  export function parseArgs(argv) {
30
32
  const out = {
31
33
  help: false,
@@ -58,6 +60,21 @@ export function parseArgs(argv) {
58
60
  case "revoke-project":
59
61
  out.revokeProject = true;
60
62
  break;
63
+ case "auto-save":
64
+ case "--auto-save": {
65
+ // `auto-save` on its own reports the state rather than
66
+ // changing it — a bare subcommand must never be read as
67
+ // consent to turn automatic saving on.
68
+ const value = argv[i + 1]?.toLowerCase();
69
+ if (value === "on" || value === "off" || value === "status") {
70
+ out.autoSave = value;
71
+ i++;
72
+ }
73
+ else {
74
+ out.autoSave = "status";
75
+ }
76
+ break;
77
+ }
61
78
  case "--prod":
62
79
  case "--dev":
63
80
  case "--staging":
@@ -140,6 +157,36 @@ export async function main(argv = process.argv.slice(2)) {
140
157
  printHelp();
141
158
  return;
142
159
  }
160
+ // Republish the resolved opt-in for the plugin hooks before anything else
161
+ // runs. The hooks do no resolution of their own — they read this file or
162
+ // they fail safe to "off" (WALM-642) — so every start-up refreshes it,
163
+ // including the ones that return early below. Best effort by design: a
164
+ // read-only home must not stop the server, and a hook that finds nothing
165
+ // already behaves as off.
166
+ publishHookState();
167
+ // Runs before the credential paths below: reading or flipping the opt-in
168
+ // does not need an account, and a user deciding whether to enable
169
+ // automatic memory should not be pushed through a browser login first.
170
+ if (args.autoSave) {
171
+ if (args.autoSave === "status") {
172
+ note(autoSaveSummary());
173
+ return;
174
+ }
175
+ const enabled = args.autoSave === "on";
176
+ const { path } = setAutoSave(enabled);
177
+ note(enabled
178
+ ? `Automatic memory is ON. The agent may now save durable facts without being asked; ` +
179
+ `credentials are still excluded and stripped before any write. Saved to ${path}.`
180
+ : `Automatic memory is OFF. Facts are saved only when you ask for them. Saved to ${path}.`);
181
+ const status = autoSaveStatus();
182
+ if (status.source === "env" && status.enabled !== enabled) {
183
+ // The file was written, but this process would still answer the
184
+ // other way — say so rather than let the setting look ignored.
185
+ note(`Note: ${AUTO_SAVE_ENV}=${process.env[AUTO_SAVE_ENV]} is set in this environment ` +
186
+ `and overrides the file. Unset it for the saved choice to take effect.`);
187
+ }
188
+ return;
189
+ }
143
190
  if (args.logout) {
144
191
  const cleared = clearCreds();
145
192
  // Explicit sign-out discards the write-ahead record too. Without this
@@ -357,6 +404,13 @@ export async function main(argv = process.argv.slice(2)) {
357
404
  // tool from the MCP client) opens the correct dashboard. Before
358
405
  // this fix `--dev` was silently dropped here and the flow always
359
406
  // routed to prod (https://memory.walrus.xyz).
407
+ // No credentials and no terminal: a brand-new install being set up
408
+ // through an MCP client. Stamp it now, while we can still tell it
409
+ // apart from a long-standing user — otherwise a sign-in through the
410
+ // `memwal_login` tool would later be indistinguishable from one,
411
+ // and automatic saving would switch itself on with nobody having
412
+ // been asked (WALM-642).
413
+ markConsentPending();
360
414
  const handoff = await runAuthRequiredServer({ relayerUrl, webUrl, label, namespace });
361
415
  if (handoff) {
362
416
  // The user completed `memwal_login` in this SAME session: the
@@ -377,6 +431,9 @@ export async function main(argv = process.argv.slice(2)) {
377
431
  delegateAddress: handoff.creds.delegateAddress,
378
432
  credentialsPath: credsPath(),
379
433
  });
434
+ const pendingAfterLogin = pendingConsentNotice();
435
+ if (pendingAfterLogin)
436
+ note(pendingAfterLogin);
380
437
  await runBridge(handoff.creds, { relayerUrl, webUrl, label, namespace }, handoff.pendingLines);
381
438
  }
382
439
  return;
@@ -385,6 +442,10 @@ export async function main(argv = process.argv.slice(2)) {
385
442
  note("Walrus Memory MCP is not authorized yet — opening browser to connect your Sui wallet.");
386
443
  creds = await loginFlow({ relayerUrl, webUrl, label });
387
444
  note(`Authorized as ${creds.walletAddress.slice(0, 10)}...`);
445
+ // Before the question is put, not after: if the user abandons the
446
+ // prompt, the install must still read as "never answered" rather than
447
+ // fall through to the pre-existing-user rule and start saving.
448
+ markConsentPending();
388
449
  }
389
450
  else {
390
451
  log.info("creds.loaded", {
@@ -404,6 +465,11 @@ export async function main(argv = process.argv.slice(2)) {
404
465
  // user is the one looking at stdout — there's no MCP client to bridge
405
466
  // with, so hanging the process is the wrong default.
406
467
  if (process.stdin.isTTY) {
468
+ // The one moment there is demonstrably a human here. Consent is asked
469
+ // on a terminal and nowhere else — never as an MCP tool, a tool
470
+ // description or an instruction, because a model answering this is not
471
+ // the user answering it (WALM-642).
472
+ await askForConsentIfOwed();
407
473
  note(``);
408
474
  if (wasLoggedIn) {
409
475
  note(`✅ Already authorized as ${creds.walletAddress.slice(0, 10)}...${creds.walletAddress.slice(-6)}`);
@@ -415,12 +481,46 @@ export async function main(argv = process.argv.slice(2)) {
415
481
  note(`✅ Login complete. Credentials saved to ${credsPath()}`);
416
482
  }
417
483
  note(``);
484
+ // The one moment a human is guaranteed to be looking at this output —
485
+ // so it is where the automatic-save choice gets surfaced (WALM-642).
486
+ note(autoSaveSummary());
487
+ note(``);
418
488
  note(`Next: add this package to your MCP client config (Cursor / Claude Desktop / etc).`);
419
489
  note(`See \`memwal-mcp --help\` for ready-to-paste snippets.`);
420
490
  return;
421
491
  }
492
+ // Non-interactive from here on. Say the state once on stderr — there is no
493
+ // one to ask, and a prompt on this stdin would hang the server forever.
494
+ const pending = pendingConsentNotice();
495
+ if (pending)
496
+ note(pending);
422
497
  await runBridge(creds, { relayerUrl, webUrl, label, namespace });
423
498
  }
499
+ /**
500
+ * Put the consent question to the user, if it is still owed one.
501
+ *
502
+ * Silent when the question has been answered, when `MEMWAL_AUTO_SAVE` has
503
+ * settled it, or when the input stream ends without an answer — in that last
504
+ * case the state stays unset and the question comes back next time, rather than
505
+ * a choice being recorded that nobody made. A declined answer is written once
506
+ * and never asked about again.
507
+ */
508
+ async function askForConsentIfOwed() {
509
+ if (!autoSaveStatus().pendingConsent)
510
+ return;
511
+ const answer = await askAutoSaveConsent({
512
+ input: process.stdin,
513
+ output: process.stderr,
514
+ isTTY: process.stdin.isTTY === true,
515
+ });
516
+ if (answer === null) {
517
+ note("No answer recorded — automatic memory is unchanged and you will be " +
518
+ "asked again next time. Set it directly with `memwal-mcp auto-save on|off`.");
519
+ return;
520
+ }
521
+ const { path } = setAutoSave(answer);
522
+ note(consentOutcomeNotice(answer, path));
523
+ }
424
524
  function printHelp() {
425
525
  process.stderr.write(helpText() + "\n");
426
526
  }
@@ -457,6 +557,23 @@ export function helpText() {
457
557
  " required again if the account,",
458
558
  " delegate key or relayer changes.",
459
559
  " memwal-mcp revoke-project Withdraw that approval.",
560
+ " memwal-mcp auto-save on|off Turn automatic memory on or off.",
561
+ " ON once you agree to it: `login` asks",
562
+ " in the terminal the first time, and",
563
+ " nothing is saved unprompted until you",
564
+ " answer. Saved memories are permanent",
565
+ " — Walrus is immutable storage — so",
566
+ " you can stop saving new ones but",
567
+ " cannot delete one already saved.",
568
+ " Credentials (passwords, API keys,",
569
+ " tokens, private keys, seed phrases,",
570
+ " auth headers, URLs with an embedded",
571
+ " user:password) are stripped before",
572
+ " any write either way — a safety net,",
573
+ " not a guarantee. Stored in",
574
+ " settings.json next to",
575
+ " credentials.json.",
576
+ " memwal-mcp auto-save Report the current setting.",
460
577
  " memwal-mcp --help Show this help.",
461
578
  "",
462
579
  "Options:",
@@ -494,6 +611,9 @@ export function helpText() {
494
611
  " Must be an ABSOLUTE path outside the",
495
612
  " project; anything else is refused.",
496
613
  " MEMWAL_NAMESPACE same as --namespace",
614
+ " MEMWAL_AUTO_SAVE=1 Automatic memory for this server",
615
+ " only; overrides settings.json and",
616
+ " skips the login question. 0 = off.",
497
617
  " MEMWAL_MCP_DEBUG=1 Verbose stderr logging.",
498
618
  "",
499
619
  "Minimal MCP client config (Cursor, Claude Desktop, etc.):",
@@ -537,6 +657,8 @@ export function helpText() {
537
657
  }
538
658
  // Re-exports — handy if someone wants to embed this in another tool.
539
659
  export { loadCreds, saveCreds, clearCreds, credsPath, resolveCreds, approveProjectCreds, revokeProjectCredsApproval, formatProjectCredsNotice, formatProjectCredsStorageWarning, } from "./auth.js";
660
+ export { isAutoSaveEnabled, isConsentPending, autoSaveStatus, setAutoSave, markConsentPending, publishHookState, settingsPath, hookStatePath, } from "./auto-save.js";
661
+ export { askAutoSaveConsent, interpretConsentAnswer, CONSENT_PROMPT } from "./consent.js";
540
662
  export { loginFlow } from "./login.js";
541
663
  export { runBridge } from "./bridge.js";
542
664
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,24 @@
1
1
  /**
2
- * MCP `instructions` payloads for the two local initialize responders.
2
+ * Build the signed-in instruction payload for a given opt-in state.
3
3
  *
4
- * Clients inject this field into the model's system prompt during the
5
- * `initialize` handshake, before any `tools/list`. That makes it the only
6
- * proactive-usage channel that survives lazy tool loading, which is what broke
7
- * proactive save/recall in the first place (WALM-324): the guidance used to
8
- * live only in tool descriptions, and clients stopped putting those in context
9
- * until a tool was explicitly loaded.
10
- *
11
- * Both local responders need their own copy because the bridge answers
12
- * `initialize` itself and SUPPRESSES the relayer's reply (see
13
- * `buildLocalInitializeResult` in bridge.ts). Without this, the relayer's
14
- * instructions are correct but unreachable for every stdio client.
4
+ * Exported separately from the resolver so tests can pin both branches without
5
+ * touching the filesystem or the environment.
6
+ */
7
+ export declare function buildProactiveInstructions(opts: {
8
+ autoSave: boolean;
9
+ }): string;
10
+ /**
11
+ * The payload for THIS process, resolved from the user's opt-in at call time.
15
12
  *
16
- * The relayer keeps a separate copy in
17
- * services/server/scripts/mcp/server.ts, which serves the direct HTTP/OAuth
18
- * connector path. It cannot share this module: that file belongs to the
19
- * standalone `memwal-server-scripts` npm package with no workspace link here.
20
- * Keep the two in sync, except: this copy must not name a tool cold start
21
- * does not advertise (`memwal_remember_status` is the worked example GH
22
- * #928). The sidecar copy may name it; that process actually registers the
23
- * tool.
13
+ * A function, not a const: the opt-in lives on disk and in the environment, and
14
+ * `initialize` can arrive after the user has flipped it.
15
+ */
16
+ export declare function proactiveInstructions(): string;
17
+ /**
18
+ * Signed-in path (bridge mode) with automatic saving on. Kept as a named
19
+ * export because it is the text the whole proactive contract is written
20
+ * against; `proactiveInstructions()` is what the bridge actually serves.
24
21
  */
25
- /** Signed-in path (bridge mode). Full proactive contract. */
26
22
  export declare const PROACTIVE_INSTRUCTIONS: string;
27
23
  /**
28
24
  * Signed-out path (auth-required mode). Deliberately NOT the proactive text:
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,QA+BvB,CAAC;AAEb;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAK5B,CAAC"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AA4FA;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAU9E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAiD,CAAC;AAErF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAK5B,CAAC"}