@mysten-incubation/memwal-mcp 0.0.6-rc.0 → 0.0.7-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/auth-required.js +2 -2
- package/dist/auth-required.js.map +1 -1
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +137 -43
- package/dist/bridge.js.map +1 -1
- package/package.json +1 -2
- package/plugin/.claude-plugin/plugin.json +0 -12
- package/plugin/.codex-mcp.json +0 -8
- package/plugin/.codex-plugin/plugin.json +0 -29
- package/plugin/.cursor-mcp.json +0 -8
- package/plugin/.cursor-plugin/plugin.json +0 -12
- package/plugin/.mcp.json +0 -8
- package/plugin/hooks/codex-hooks.json +0 -41
- package/plugin/hooks/cursor-hooks.json +0 -24
- package/plugin/hooks/hooks.json +0 -41
- package/plugin/hooks.json +0 -41
- package/plugin/plugin.json +0 -12
- package/plugin/scripts/install_codex_hooks.mjs +0 -163
- package/plugin/scripts/lib/hook-io.mjs +0 -81
- package/plugin/scripts/lib/signals.mjs +0 -38
- package/plugin/scripts/on_post_tool.mjs +0 -45
- package/plugin/scripts/on_session_start.mjs +0 -18
- package/plugin/scripts/on_user_prompt.mjs +0 -41
package/README.md
CHANGED
|
@@ -4,6 +4,10 @@ Walrus Memory MCP is a stdio Model Context Protocol server for Walrus Memory. It
|
|
|
4
4
|
|
|
5
5
|
On first use, the package advertises a `memwal_login` tool to the MCP client. The agent can call it inline — no separate CLI command needed. The tool opens a browser-based wallet login flow and stores local credentials at `~/.memwal/credentials.json`. A matching `memwal_logout` tool clears the saved credentials.
|
|
6
6
|
|
|
7
|
+
## Source and release ownership
|
|
8
|
+
|
|
9
|
+
This directory is the canonical source for the MCP runtime, tests, versioning, and npm releases. The Claude Code marketplace package is maintained separately in [`CommandOSSLabs/walrus-memory-mcp-plugin`](https://github.com/CommandOSSLabs/walrus-memory-mcp-plugin) for transfer to MystenLabs. npm releases intentionally do not bundle a second marketplace-plugin copy.
|
|
10
|
+
|
|
7
11
|
## Quick Start
|
|
8
12
|
|
|
9
13
|
Add Walrus Memory MCP to your MCP client config:
|
package/dist/auth-required.js
CHANGED
|
@@ -67,12 +67,12 @@ const TOOL_DEFINITIONS = [
|
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
name: "memwal_restore",
|
|
70
|
-
description: "Re-index a namespace from Walrus blobs back into the relayer's search index. Returns counts
|
|
70
|
+
description: "Re-index a namespace from Walrus blobs back into the relayer's search index. Returns counts and truncated status; call again with a higher limit when truncated=true.",
|
|
71
71
|
inputSchema: {
|
|
72
72
|
type: "object",
|
|
73
73
|
properties: {
|
|
74
74
|
namespace: { type: "string", minLength: 1 },
|
|
75
|
-
limit: { type: "integer", minimum: 1, maximum:
|
|
75
|
+
limit: { type: "integer", minimum: 1, maximum: 100, default: 10 },
|
|
76
76
|
},
|
|
77
77
|
required: ["namespace"],
|
|
78
78
|
additionalProperties: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-required.js","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,gBAAgB,GAAG;IACrB;QACI,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACP,8KAA8K;QAClL,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;gBACtC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC9B;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,WAAW,EACP,+GAA+G;QACnH,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;gBACvC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,oBAAoB,EAAE,KAAK;SAC9B;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACP,wJAAwJ;QAC5J,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;gBACtC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC9B;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACP,
|
|
1
|
+
{"version":3,"file":"auth-required.js","sourceRoot":"","sources":["../src/auth-required.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -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;AAMnD;;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;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAerF;AAgDD,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;
|
|
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;AAMnD;;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;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAerF;AAgDD,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;AAkWD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC3B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,YAAY;AACpB;;;;yEAIyE;AACzE,YAAY,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,IAAI,CAAC,CAuTf"}
|
package/dist/bridge.js
CHANGED
|
@@ -308,7 +308,7 @@ function writeStdoutMessage(msg) {
|
|
|
308
308
|
* mode, but available even when creds already exist (so user can re-login,
|
|
309
309
|
* switch wallets, or refresh). Returns a click-able URL near-instantly;
|
|
310
310
|
* listener stays alive in the background until callback or timeout. */
|
|
311
|
-
async function handleLocalLogin(config) {
|
|
311
|
+
async function handleLocalLogin(config, onCredentials) {
|
|
312
312
|
const urlReady = new Promise((resolve) => {
|
|
313
313
|
loginFlow({
|
|
314
314
|
relayerUrl: config.relayerUrl,
|
|
@@ -318,7 +318,8 @@ async function handleLocalLogin(config) {
|
|
|
318
318
|
openBrowser: false,
|
|
319
319
|
onUrl: (url) => resolve(url),
|
|
320
320
|
})
|
|
321
|
-
.then((creds) => {
|
|
321
|
+
.then(async (creds) => {
|
|
322
|
+
await onCredentials(creds);
|
|
322
323
|
log.info("memwal_login.bridge.success", {
|
|
323
324
|
accountId: creds.accountId,
|
|
324
325
|
delegateAddress: creds.delegateAddress,
|
|
@@ -422,8 +423,10 @@ pendingLines = []) {
|
|
|
422
423
|
note(`Connected. Bridging stdio MCP ↔ ${creds.relayerUrl}`);
|
|
423
424
|
log.info("bridge.connected", { relayer: creds.relayerUrl });
|
|
424
425
|
let stdinClosed = false;
|
|
425
|
-
let reconnecting = false;
|
|
426
426
|
let reconnectAttempt = 0;
|
|
427
|
+
let reconnectPromise = null;
|
|
428
|
+
let credentialGeneration = 0;
|
|
429
|
+
let activeCredentialGeneration = 0;
|
|
427
430
|
// In-flight requests pending a response. We replay them after a forced
|
|
428
431
|
// reconnect so a server-side session swap doesn't strand a tool call
|
|
429
432
|
// forever waiting for a reply that will never come. Notifications
|
|
@@ -434,52 +437,135 @@ pendingLines = []) {
|
|
|
434
437
|
* locally-served `memwal_login` + `memwal_logout` tools so the MCP
|
|
435
438
|
* client surfaces them in its tool palette. */
|
|
436
439
|
const pendingListIds = new Set();
|
|
437
|
-
async function reconnect(reason) {
|
|
438
|
-
if (stdinClosed
|
|
440
|
+
async function reconnect(reason, immediate = false) {
|
|
441
|
+
if (stdinClosed)
|
|
439
442
|
return;
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
443
|
+
// All callers await the same reconnect. Returning immediately while a
|
|
444
|
+
// reconnect is active lets the server pump spin on the aborted stream
|
|
445
|
+
// and lets client messages race the stale POST URL.
|
|
446
|
+
if (reconnectPromise)
|
|
447
|
+
return reconnectPromise;
|
|
448
|
+
reconnectPromise = (async () => {
|
|
449
|
+
try {
|
|
450
|
+
sse.abort();
|
|
451
|
+
}
|
|
452
|
+
catch {
|
|
453
|
+
/* already dead */
|
|
454
|
+
}
|
|
455
|
+
const backoff = immediate
|
|
456
|
+
? 0
|
|
457
|
+
: Math.min(15_000, 500 * Math.pow(2, reconnectAttempt));
|
|
458
|
+
reconnectAttempt += 1;
|
|
459
|
+
log.warn("bridge.reconnecting", {
|
|
460
|
+
reason,
|
|
461
|
+
backoffMs: backoff,
|
|
462
|
+
attempt: reconnectAttempt,
|
|
457
463
|
});
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
const
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
464
|
+
if (backoff > 0)
|
|
465
|
+
await new Promise((r) => setTimeout(r, backoff));
|
|
466
|
+
try {
|
|
467
|
+
while (!stdinClosed) {
|
|
468
|
+
const openingGeneration = credentialGeneration;
|
|
469
|
+
const openingCreds = creds;
|
|
470
|
+
const candidate = await openSseStream(openingCreds.relayerUrl, openingCreds);
|
|
471
|
+
// Login can finish while an older handshake is awaiting its
|
|
472
|
+
// endpoint event. Never publish that stale session: its GET
|
|
473
|
+
// used the old key, while subsequent POSTs would use the new
|
|
474
|
+
// key and fail session authentication.
|
|
475
|
+
if (openingGeneration !== credentialGeneration) {
|
|
476
|
+
candidate.abort();
|
|
477
|
+
log.info("bridge.reconnect_discarded_stale_credentials", {
|
|
478
|
+
openingGeneration,
|
|
479
|
+
credentialGeneration,
|
|
480
|
+
});
|
|
481
|
+
continue;
|
|
482
|
+
}
|
|
483
|
+
sse = candidate;
|
|
484
|
+
activeCredentialGeneration = openingGeneration;
|
|
485
|
+
reconnectAttempt = 0;
|
|
486
|
+
log.info("bridge.reconnected", {
|
|
487
|
+
relayer: openingCreds.relayerUrl,
|
|
488
|
+
replayCount: inFlight.size,
|
|
471
489
|
});
|
|
490
|
+
// Replay any requests that haven't been answered yet against the
|
|
491
|
+
// fresh session. Iterate over a snapshot — postMessage is async
|
|
492
|
+
// and the SSE pump may delete entries concurrently as replies
|
|
493
|
+
// start arriving on the new session.
|
|
494
|
+
for (const [id, msg] of Array.from(inFlight.entries())) {
|
|
495
|
+
try {
|
|
496
|
+
const status = await postMessage(sse.postUrl, msg, openingCreds);
|
|
497
|
+
log.info("bridge.replayed", { id, status });
|
|
498
|
+
}
|
|
499
|
+
catch (err) {
|
|
500
|
+
log.error("bridge.replay_failed", {
|
|
501
|
+
id,
|
|
502
|
+
err: err instanceof Error ? err.message : String(err),
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
// Credentials can also rotate while replay awaits POSTs.
|
|
507
|
+
// In that case this candidate is already stale even though
|
|
508
|
+
// it passed the first generation check.
|
|
509
|
+
if (openingGeneration !== credentialGeneration) {
|
|
510
|
+
candidate.abort();
|
|
511
|
+
continue;
|
|
512
|
+
}
|
|
513
|
+
break;
|
|
472
514
|
}
|
|
473
515
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
516
|
+
catch (err) {
|
|
517
|
+
log.error("bridge.reconnect_failed", {
|
|
518
|
+
err: err instanceof Error ? err.message : String(err),
|
|
519
|
+
});
|
|
520
|
+
// Try again on the next stdin message rather than spinning.
|
|
521
|
+
}
|
|
522
|
+
})();
|
|
523
|
+
try {
|
|
524
|
+
await reconnectPromise;
|
|
480
525
|
}
|
|
481
526
|
finally {
|
|
482
|
-
|
|
527
|
+
reconnectPromise = null;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
async function adoptCredentials(nextCreds) {
|
|
531
|
+
const previousAccountId = creds.accountId;
|
|
532
|
+
const accountChanged = previousAccountId !== nextCreds.accountId;
|
|
533
|
+
// Never replay an operation authorized for account A against account B.
|
|
534
|
+
// Return explicit retryable errors instead; the caller can decide which
|
|
535
|
+
// operations belong in the newly-selected account.
|
|
536
|
+
if (accountChanged) {
|
|
537
|
+
try {
|
|
538
|
+
sse.abort();
|
|
539
|
+
}
|
|
540
|
+
catch {
|
|
541
|
+
/* already dead */
|
|
542
|
+
}
|
|
543
|
+
for (const [id] of Array.from(inFlight.entries())) {
|
|
544
|
+
writeStdoutMessage({
|
|
545
|
+
jsonrpc: "2.0",
|
|
546
|
+
id,
|
|
547
|
+
error: {
|
|
548
|
+
code: -32001,
|
|
549
|
+
message: "Walrus Memory account changed during login; retry this request for the new account",
|
|
550
|
+
},
|
|
551
|
+
});
|
|
552
|
+
pendingListIds.delete(id);
|
|
553
|
+
}
|
|
554
|
+
inFlight.clear();
|
|
555
|
+
}
|
|
556
|
+
creds = nextCreds;
|
|
557
|
+
credentialGeneration += 1;
|
|
558
|
+
reconnectAttempt = 0;
|
|
559
|
+
log.info("bridge.credentials_updated", {
|
|
560
|
+
previousAccountId,
|
|
561
|
+
accountId: creds.accountId,
|
|
562
|
+
delegate: creds.delegateAddress,
|
|
563
|
+
});
|
|
564
|
+
await reconnect("login-credentials-updated", true);
|
|
565
|
+
// Covers the narrow case where this update joined a reconnect just as
|
|
566
|
+
// its promise was resolving, after its final generation check.
|
|
567
|
+
if (activeCredentialGeneration !== credentialGeneration) {
|
|
568
|
+
await reconnect("login-credentials-generation-mismatch", true);
|
|
483
569
|
}
|
|
484
570
|
}
|
|
485
571
|
// Server → client: stream SSE messages to stdout. Loop forever, restart
|
|
@@ -541,7 +627,7 @@ pendingLines = []) {
|
|
|
541
627
|
if (msg.method === "tools/call" && msg.id != null) {
|
|
542
628
|
const params = (msg.params ?? {});
|
|
543
629
|
if (params.name === "memwal_login") {
|
|
544
|
-
const result = await handleLocalLogin(config);
|
|
630
|
+
const result = await handleLocalLogin(config, adoptCredentials);
|
|
545
631
|
writeStdoutMessage({
|
|
546
632
|
jsonrpc: "2.0",
|
|
547
633
|
id: msg.id,
|
|
@@ -582,6 +668,14 @@ pendingLines = []) {
|
|
|
582
668
|
msg.id !== null) {
|
|
583
669
|
inFlight.set(msg.id, msg);
|
|
584
670
|
}
|
|
671
|
+
// A successful background login swaps credentials and SSE
|
|
672
|
+
// sessions asynchronously. Wait for that swap before sending a
|
|
673
|
+
// new request so it cannot race the stale session URL/key.
|
|
674
|
+
if (reconnectPromise)
|
|
675
|
+
await reconnectPromise;
|
|
676
|
+
if (activeCredentialGeneration !== credentialGeneration) {
|
|
677
|
+
await reconnect("post-credential-generation-mismatch", true);
|
|
678
|
+
}
|
|
585
679
|
const status = await postMessage(sse.postUrl, msg, creds);
|
|
586
680
|
if (status === 404) {
|
|
587
681
|
log.warn("bridge.session_stale", { sessionUrl: sse.postUrl });
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mysten-incubation/memwal-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7-dev.0",
|
|
4
4
|
"description": "Walrus Memory MCP client — single-binary stdio MCP server that bridges Cursor / Claude Desktop / Antigravity / Claude Code to the Walrus Memory relayer. Handles browser-based wallet login on first run.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
31
|
"dist",
|
|
32
|
-
"plugin",
|
|
33
32
|
"README.md"
|
|
34
33
|
],
|
|
35
34
|
"keywords": [
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "memwal",
|
|
3
|
-
"version": "0.0.6",
|
|
4
|
-
"description": "Automatic Walrus Memory for Claude Code — proactive recall and durable-fact saving via the MemWal MCP + lifecycle hooks.",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Mysten Labs"
|
|
7
|
-
},
|
|
8
|
-
"homepage": "https://memory.walrus.xyz",
|
|
9
|
-
"repository": "https://github.com/MystenLabs/MemWal",
|
|
10
|
-
"license": "Apache-2.0",
|
|
11
|
-
"keywords": ["memory", "mcp", "walrus", "sui", "semantic-search"]
|
|
12
|
-
}
|
package/plugin/.codex-mcp.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "memwal",
|
|
3
|
-
"version": "0.0.6",
|
|
4
|
-
"description": "Persistent Walrus Memory for Codex. Remembers decisions, preferences, and project context across sessions.",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Mysten Labs",
|
|
7
|
-
"url": "https://memory.walrus.xyz"
|
|
8
|
-
},
|
|
9
|
-
"homepage": "https://memory.walrus.xyz",
|
|
10
|
-
"repository": "https://github.com/MystenLabs/MemWal",
|
|
11
|
-
"license": "Apache-2.0",
|
|
12
|
-
"keywords": ["memory", "personalization", "mcp", "walrus", "semantic-search"],
|
|
13
|
-
"mcpServers": "./.codex-mcp.json",
|
|
14
|
-
"hooks": "./hooks/codex-hooks.json",
|
|
15
|
-
"interface": {
|
|
16
|
-
"displayName": "MemWal",
|
|
17
|
-
"shortDescription": "Portable, encrypted memory layer for AI coding workflows",
|
|
18
|
-
"longDescription": "MemWal adds long-term, user-owned memory to Codex. Store decisions, preferences, and session context; memories are encrypted with SEAL and stored on Walrus, and retrieved via semantic search so Codex always has the right context.",
|
|
19
|
-
"developerName": "Mysten Labs",
|
|
20
|
-
"category": "Productivity",
|
|
21
|
-
"capabilities": ["Read", "Write"],
|
|
22
|
-
"websiteURL": "https://memory.walrus.xyz",
|
|
23
|
-
"defaultPrompt": [
|
|
24
|
-
"Search my memories for recent project decisions",
|
|
25
|
-
"Remember that I prefer pnpm and TypeScript strict mode",
|
|
26
|
-
"What do you know about my coding preferences?"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
}
|
package/plugin/.cursor-mcp.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "memwal",
|
|
3
|
-
"version": "0.0.6",
|
|
4
|
-
"description": "Automatic Walrus Memory for Cursor — proactive recall and durable-fact saving via the MemWal MCP + lifecycle hooks.",
|
|
5
|
-
"author": { "name": "Mysten Labs" },
|
|
6
|
-
"homepage": "https://memory.walrus.xyz",
|
|
7
|
-
"repository": "https://github.com/MystenLabs/MemWal",
|
|
8
|
-
"license": "Apache-2.0",
|
|
9
|
-
"keywords": ["memory", "mcp", "walrus", "semantic-search"],
|
|
10
|
-
"hooks": "./hooks/cursor-hooks.json",
|
|
11
|
-
"mcpServers": ".cursor-mcp.json"
|
|
12
|
-
}
|
package/plugin/.mcp.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"SessionStart": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "startup|resume|compact",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"type": "command",
|
|
9
|
-
"command": "node \"${PLUGIN_ROOT}/scripts/on_session_start.mjs\"",
|
|
10
|
-
"statusMessage": "Loading Walrus Memory context...",
|
|
11
|
-
"timeout": 10
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
"UserPromptSubmit": [
|
|
17
|
-
{
|
|
18
|
-
"hooks": [
|
|
19
|
-
{
|
|
20
|
-
"type": "command",
|
|
21
|
-
"command": "node \"${PLUGIN_ROOT}/scripts/on_user_prompt.mjs\"",
|
|
22
|
-
"statusMessage": "Checking memory relevance...",
|
|
23
|
-
"timeout": 12
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
],
|
|
28
|
-
"PostToolUse": [
|
|
29
|
-
{
|
|
30
|
-
"matcher": "Bash",
|
|
31
|
-
"hooks": [
|
|
32
|
-
{
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "node \"${PLUGIN_ROOT}/scripts/on_post_tool.mjs\"",
|
|
35
|
-
"timeout": 12
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"hooks": {
|
|
4
|
-
"sessionStart": [
|
|
5
|
-
{
|
|
6
|
-
"command": "node \"${CURSOR_PLUGIN_ROOT}/scripts/on_session_start.mjs\"",
|
|
7
|
-
"matcher": "startup|resume|compact"
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"beforeSubmitPrompt": [
|
|
11
|
-
{
|
|
12
|
-
"command": "node \"${CURSOR_PLUGIN_ROOT}/scripts/on_user_prompt.mjs\"",
|
|
13
|
-
"timeout": 8
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
"postToolUse": [
|
|
17
|
-
{
|
|
18
|
-
"command": "node \"${CURSOR_PLUGIN_ROOT}/scripts/on_post_tool.mjs\"",
|
|
19
|
-
"matcher": "Bash",
|
|
20
|
-
"timeout": 5
|
|
21
|
-
}
|
|
22
|
-
]
|
|
23
|
-
}
|
|
24
|
-
}
|
package/plugin/hooks/hooks.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"SessionStart": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "startup|resume|compact",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"type": "command",
|
|
9
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/on_session_start.mjs\"",
|
|
10
|
-
"statusMessage": "Loading Walrus Memory context...",
|
|
11
|
-
"timeout": 8
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
"UserPromptSubmit": [
|
|
17
|
-
{
|
|
18
|
-
"hooks": [
|
|
19
|
-
{
|
|
20
|
-
"type": "command",
|
|
21
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/on_user_prompt.mjs\"",
|
|
22
|
-
"statusMessage": "Checking memory relevance...",
|
|
23
|
-
"timeout": 8
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
],
|
|
28
|
-
"PostToolUse": [
|
|
29
|
-
{
|
|
30
|
-
"matcher": "Bash",
|
|
31
|
-
"hooks": [
|
|
32
|
-
{
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/on_post_tool.mjs\"",
|
|
35
|
-
"timeout": 5
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
}
|
package/plugin/hooks.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"SessionStart": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "*",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"name": "memwal-session-start",
|
|
9
|
-
"type": "command",
|
|
10
|
-
"command": "node \"${extensionPath}/scripts/on_session_start.mjs\" 2>/dev/null || true"
|
|
11
|
-
}
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"UserPromptSubmit": [
|
|
16
|
-
{
|
|
17
|
-
"hooks": [
|
|
18
|
-
{
|
|
19
|
-
"name": "memwal-user-prompt",
|
|
20
|
-
"type": "command",
|
|
21
|
-
"command": "node \"${extensionPath}/scripts/on_user_prompt.mjs\" 2>/dev/null || true",
|
|
22
|
-
"timeout": 8
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"PostToolUse": [
|
|
28
|
-
{
|
|
29
|
-
"matcher": "Bash",
|
|
30
|
-
"hooks": [
|
|
31
|
-
{
|
|
32
|
-
"name": "memwal-post-tool",
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "node \"${extensionPath}/scripts/on_post_tool.mjs\" 2>/dev/null || true",
|
|
35
|
-
"timeout": 5
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
}
|
package/plugin/plugin.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "memwal",
|
|
3
|
-
"name": "memwal",
|
|
4
|
-
"version": "0.0.6",
|
|
5
|
-
"description": "Automatic Walrus Memory for Antigravity — proactive recall and durable-fact saving via the MemWal MCP + lifecycle hooks.",
|
|
6
|
-
"author": { "name": "Mysten Labs" },
|
|
7
|
-
"homepage": "https://memory.walrus.xyz",
|
|
8
|
-
"repository": "https://github.com/MystenLabs/MemWal",
|
|
9
|
-
"license": "Apache-2.0",
|
|
10
|
-
"keywords": ["memory", "mcp", "walrus", "sui", "semantic-search"],
|
|
11
|
-
"contextFileName": "AGENTS.md"
|
|
12
|
-
}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Install MemWal lifecycle hooks into ~/.codex/hooks.json and register the
|
|
4
|
-
* MemWal MCP server in ~/.codex/config.toml.
|
|
5
|
-
*
|
|
6
|
-
* Codex discovers hooks only at ~/.codex/hooks.json (or <repo>/.codex/hooks.json)
|
|
7
|
-
* and has no plugin host that auto-wires hooks. This installer reads the
|
|
8
|
-
* template at hooks/codex-hooks.json, rewrites the ${PLUGIN_ROOT} placeholder
|
|
9
|
-
* to this plugin's absolute path, and merges the entries into ~/.codex/hooks.json.
|
|
10
|
-
*
|
|
11
|
-
* Re-running is idempotent: entries this installer owns (identified by our
|
|
12
|
-
* hook script filenames) are removed before fresh entries are added.
|
|
13
|
-
*
|
|
14
|
-
* Usage:
|
|
15
|
-
* node install_codex_hooks.mjs # install or update
|
|
16
|
-
* node install_codex_hooks.mjs --uninstall # remove MemWal hook entries
|
|
17
|
-
*
|
|
18
|
-
* After installing, enable the Codex hooks feature flag in ~/.codex/config.toml:
|
|
19
|
-
*
|
|
20
|
-
* [features]
|
|
21
|
-
* codex_hooks = true
|
|
22
|
-
*/
|
|
23
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
24
|
-
import { homedir } from "node:os";
|
|
25
|
-
import { join, dirname } from "node:path";
|
|
26
|
-
import { fileURLToPath } from "node:url";
|
|
27
|
-
|
|
28
|
-
const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url));
|
|
29
|
-
const PLUGIN_ROOT = dirname(SCRIPT_DIR);
|
|
30
|
-
|
|
31
|
-
const CODEX_DIR = join(homedir(), ".codex");
|
|
32
|
-
const HOOKS_FILE = join(CODEX_DIR, "hooks.json");
|
|
33
|
-
const CONFIG_FILE = join(CODEX_DIR, "config.toml");
|
|
34
|
-
const TEMPLATE_FILE = join(PLUGIN_ROOT, "hooks", "codex-hooks.json");
|
|
35
|
-
|
|
36
|
-
// Entries are "ours" when a hook command references one of our scripts.
|
|
37
|
-
const OWNER_MARKERS = [
|
|
38
|
-
"on_session_start.mjs",
|
|
39
|
-
"on_user_prompt.mjs",
|
|
40
|
-
"on_post_tool.mjs",
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
function loadTemplate() {
|
|
44
|
-
const raw = readFileSync(TEMPLATE_FILE, "utf8").replaceAll(
|
|
45
|
-
"${PLUGIN_ROOT}",
|
|
46
|
-
PLUGIN_ROOT
|
|
47
|
-
);
|
|
48
|
-
return JSON.parse(raw);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function loadExisting() {
|
|
52
|
-
if (!existsSync(HOOKS_FILE)) return { hooks: {} };
|
|
53
|
-
try {
|
|
54
|
-
return JSON.parse(readFileSync(HOOKS_FILE, "utf8"));
|
|
55
|
-
} catch (e) {
|
|
56
|
-
console.error(`error: failed to read ${HOOKS_FILE}: ${e.message}`);
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function isOwned(entry) {
|
|
62
|
-
for (const hook of entry.hooks || []) {
|
|
63
|
-
const cmd = hook.command || "";
|
|
64
|
-
if (OWNER_MARKERS.some((m) => cmd.includes(m))) return true;
|
|
65
|
-
}
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function stripOwned(config) {
|
|
70
|
-
const hooks = config.hooks || {};
|
|
71
|
-
for (const event of Object.keys(hooks)) {
|
|
72
|
-
hooks[event] = (hooks[event] || []).filter((e) => !isOwned(e));
|
|
73
|
-
if (hooks[event].length === 0) delete hooks[event];
|
|
74
|
-
}
|
|
75
|
-
config.hooks = hooks;
|
|
76
|
-
return config;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function mergeTemplate(config, template) {
|
|
80
|
-
config.hooks = config.hooks || {};
|
|
81
|
-
for (const [event, entries] of Object.entries(template.hooks || {})) {
|
|
82
|
-
config.hooks[event] = (config.hooks[event] || []).concat(entries);
|
|
83
|
-
}
|
|
84
|
-
return config;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function writeHooks(config) {
|
|
88
|
-
mkdirSync(CODEX_DIR, { recursive: true });
|
|
89
|
-
writeFileSync(HOOKS_FILE, JSON.stringify(config, null, 2) + "\n");
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** Append [mcp_servers.memwal] to config.toml if it isn't registered yet. */
|
|
93
|
-
function ensureMcpRegistered() {
|
|
94
|
-
mkdirSync(CODEX_DIR, { recursive: true });
|
|
95
|
-
let content = existsSync(CONFIG_FILE) ? readFileSync(CONFIG_FILE, "utf8") : "";
|
|
96
|
-
if (content.includes("[mcp_servers.memwal]")) return false;
|
|
97
|
-
const block =
|
|
98
|
-
"\n[mcp_servers.memwal]\n" +
|
|
99
|
-
'command = "npx"\n' +
|
|
100
|
-
'args = ["-y", "@mysten-incubation/memwal-mcp"]\n';
|
|
101
|
-
writeFileSync(CONFIG_FILE, (content.trimEnd() + "\n" + block).trimStart());
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function featureFlagEnabled() {
|
|
106
|
-
if (!existsSync(CONFIG_FILE)) return false;
|
|
107
|
-
return readFileSync(CONFIG_FILE, "utf8")
|
|
108
|
-
.split("\n")
|
|
109
|
-
.map((l) => l.split("#", 1)[0].replace(/\s/g, ""))
|
|
110
|
-
.includes("codex_hooks=true");
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function printFeatureFlagHint() {
|
|
114
|
-
console.log("");
|
|
115
|
-
console.log("Codex hooks feature flag is not enabled.");
|
|
116
|
-
console.log(`Add this to ${CONFIG_FILE}:`);
|
|
117
|
-
console.log("");
|
|
118
|
-
console.log(" [features]");
|
|
119
|
-
console.log(" codex_hooks = true");
|
|
120
|
-
console.log("");
|
|
121
|
-
console.log("Then restart Codex.");
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function main() {
|
|
125
|
-
const uninstall = process.argv.includes("--uninstall");
|
|
126
|
-
let config = loadExisting();
|
|
127
|
-
|
|
128
|
-
if (uninstall) {
|
|
129
|
-
config = stripOwned(config);
|
|
130
|
-
writeHooks(config);
|
|
131
|
-
console.log(`Removed MemWal hooks from ${HOOKS_FILE}`);
|
|
132
|
-
console.log(
|
|
133
|
-
"(The [mcp_servers.memwal] entry in config.toml was left in place — remove it manually if you no longer want the tools.)"
|
|
134
|
-
);
|
|
135
|
-
return 0;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (!existsSync(TEMPLATE_FILE)) {
|
|
139
|
-
console.error(`error: template not found at ${TEMPLATE_FILE}`);
|
|
140
|
-
return 1;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const template = loadTemplate();
|
|
144
|
-
config = stripOwned(config);
|
|
145
|
-
config = mergeTemplate(config, template);
|
|
146
|
-
writeHooks(config);
|
|
147
|
-
|
|
148
|
-
const mcpAdded = ensureMcpRegistered();
|
|
149
|
-
|
|
150
|
-
console.log(`Installed MemWal hooks into ${HOOKS_FILE}`);
|
|
151
|
-
console.log(`Plugin path: ${PLUGIN_ROOT}`);
|
|
152
|
-
console.log("Events: SessionStart, UserPromptSubmit, PostToolUse");
|
|
153
|
-
console.log(
|
|
154
|
-
mcpAdded
|
|
155
|
-
? `Registered [mcp_servers.memwal] in ${CONFIG_FILE}`
|
|
156
|
-
: `[mcp_servers.memwal] already present in ${CONFIG_FILE}`
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
if (!featureFlagEnabled()) printFeatureFlagHint();
|
|
160
|
-
return 0;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
process.exit(main());
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared I/O + throttle helpers for MemWal Claude Code / Codex hooks.
|
|
3
|
-
*
|
|
4
|
-
* Pure Node, no dependencies, no network. Every hook reads one JSON object
|
|
5
|
-
* from stdin, optionally emits a `hookSpecificOutput` directive on stdout,
|
|
6
|
-
* and always exits 0 — a hook must never block the session.
|
|
7
|
-
*/
|
|
8
|
-
import { readFileSync, existsSync, writeFileSync, mkdirSync } from "node:fs";
|
|
9
|
-
import { tmpdir } from "node:os";
|
|
10
|
-
import { join } from "node:path";
|
|
11
|
-
|
|
12
|
-
/** Read + parse the hook input JSON from stdin. Returns {} on any error. */
|
|
13
|
-
export function readStdin() {
|
|
14
|
-
try {
|
|
15
|
-
const raw = readFileSync(0, "utf8");
|
|
16
|
-
return raw ? JSON.parse(raw) : {};
|
|
17
|
-
} catch {
|
|
18
|
-
return {};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Emit a hook directive. No-op when `additionalContext` is empty. */
|
|
23
|
-
export function emitContext(hookEventName, additionalContext) {
|
|
24
|
-
if (!additionalContext) return;
|
|
25
|
-
process.stdout.write(
|
|
26
|
-
JSON.stringify({
|
|
27
|
-
hookSpecificOutput: { hookEventName, additionalContext },
|
|
28
|
-
})
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const STATE_DIR = join(process.env.TMPDIR || tmpdir(), "memwal-hooks");
|
|
33
|
-
|
|
34
|
-
function ensureDir() {
|
|
35
|
-
try {
|
|
36
|
-
mkdirSync(STATE_DIR, { recursive: true });
|
|
37
|
-
} catch {
|
|
38
|
-
/* best effort */
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function safe(s) {
|
|
43
|
-
return String(s || "default")
|
|
44
|
-
.replace(/[^a-zA-Z0-9_-]/g, "_")
|
|
45
|
-
.slice(0, 64);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Returns true the FIRST time it is called for a (name, session) pair, then
|
|
50
|
-
* false thereafter — used to inject a rubric or banner only once per session.
|
|
51
|
-
*/
|
|
52
|
-
export function firstTime(name, sessionId) {
|
|
53
|
-
ensureDir();
|
|
54
|
-
const f = join(STATE_DIR, `${safe(name)}_${safe(sessionId)}`);
|
|
55
|
-
if (existsSync(f)) return false;
|
|
56
|
-
try {
|
|
57
|
-
writeFileSync(f, "1");
|
|
58
|
-
} catch {
|
|
59
|
-
/* best effort */
|
|
60
|
-
}
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/** Increment and return a per-(name, session) counter. */
|
|
65
|
-
export function bumpCounter(name, sessionId) {
|
|
66
|
-
ensureDir();
|
|
67
|
-
const f = join(STATE_DIR, `count_${safe(name)}_${safe(sessionId)}`);
|
|
68
|
-
let n = 0;
|
|
69
|
-
try {
|
|
70
|
-
n = parseInt(readFileSync(f, "utf8"), 10) || 0;
|
|
71
|
-
} catch {
|
|
72
|
-
/* missing -> 0 */
|
|
73
|
-
}
|
|
74
|
-
n += 1;
|
|
75
|
-
try {
|
|
76
|
-
writeFileSync(f, String(n));
|
|
77
|
-
} catch {
|
|
78
|
-
/* best effort */
|
|
79
|
-
}
|
|
80
|
-
return n;
|
|
81
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Heuristic signal detection over user input / tool output. No network, no
|
|
3
|
-
* LLM — cheap regexes only. The agent (guided by the now-agentic tool
|
|
4
|
-
* descriptions) makes the final call; these just decide when to *remind* it.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// User is referencing earlier context / asking to resume.
|
|
8
|
-
const RECALL_INTENT =
|
|
9
|
-
/\b(remember when|last time|previously|earlier|where (did|were) we|pick up where|catch me up|as i (said|mentioned|told you)|like i said|we (already|previously) (did|decided|discussed|set up)|my (usual|preferred|preference|setup|config|stack))\b/i;
|
|
10
|
-
|
|
11
|
-
// User is stating a durable fact / preference / correction worth saving.
|
|
12
|
-
const REMEMBER_INTENT =
|
|
13
|
-
/\b(remember (this|that)|don'?t forget|note that|for future reference|keep in mind|from now on|going forward|i (prefer|like|love|hate|always|never|usually|use|work with|am|m)\b|my name is|call me|i'?m (using|on)|we (use|prefer|standardi[sz]e on))\b/i;
|
|
14
|
-
|
|
15
|
-
// Strong error markers in command output.
|
|
16
|
-
// No trailing \b: markers ending in `:` (panic:, fatal:) or `]` (error[E0432])
|
|
17
|
-
// are followed by a non-word char, so a closing \b would never match them.
|
|
18
|
-
const ERROR_STRONG =
|
|
19
|
-
/\b(traceback \(most recent|panic:|fatal:|segmentation fault|unhandled (exception|rejection)|error\[[A-Z]?\d+\]|cannot find module|command not found|permission denied|no such file)/i;
|
|
20
|
-
const ERROR_PAIR = /(^|\s)(error:|exception:|failed:|fail:|err!)/gi;
|
|
21
|
-
|
|
22
|
-
/** True when the user's message references past context worth recalling. */
|
|
23
|
-
export function detectRecall(text) {
|
|
24
|
-
return !!text && RECALL_INTENT.test(text);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** True when the user's message states a durable fact worth remembering. */
|
|
28
|
-
export function detectRemember(text) {
|
|
29
|
-
return !!text && REMEMBER_INTENT.test(text);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** True when command output looks like an error/traceback. */
|
|
33
|
-
export function detectError(text) {
|
|
34
|
-
if (!text) return false;
|
|
35
|
-
if (ERROR_STRONG.test(text)) return true;
|
|
36
|
-
const m = text.match(ERROR_PAIR);
|
|
37
|
-
return !!m && m.length >= 2;
|
|
38
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PostToolUse hook (Bash) — when a command's output looks like an error,
|
|
3
|
-
* remind the agent it can recall prior fixes and save the resolution.
|
|
4
|
-
*
|
|
5
|
-
* Heuristic only: no fetch, no network. Always exits 0.
|
|
6
|
-
*/
|
|
7
|
-
import { readStdin, emitContext } from "./lib/hook-io.mjs";
|
|
8
|
-
import { detectError } from "./lib/signals.mjs";
|
|
9
|
-
|
|
10
|
-
const input = readStdin();
|
|
11
|
-
const output = extractToolOutput(input);
|
|
12
|
-
|
|
13
|
-
// Ignore short / empty output — not enough to reason about.
|
|
14
|
-
if (!output || output.length < 50) process.exit(0);
|
|
15
|
-
|
|
16
|
-
if (detectError(output)) {
|
|
17
|
-
emitContext(
|
|
18
|
-
"PostToolUse",
|
|
19
|
-
"That command produced an error. Consider calling memwal_recall to check for a prior fix to a similar error; once you resolve it, save the fix with memwal_remember so it's available next time."
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
process.exit(0);
|
|
24
|
-
|
|
25
|
-
/** Best-effort extraction of a tool's textual output across hook-input shapes. */
|
|
26
|
-
function extractToolOutput(input) {
|
|
27
|
-
const r =
|
|
28
|
-
input.tool_response ??
|
|
29
|
-
input.tool_result ??
|
|
30
|
-
input.response ??
|
|
31
|
-
input.output ??
|
|
32
|
-
"";
|
|
33
|
-
if (typeof r === "string") return r;
|
|
34
|
-
if (r && typeof r === "object") {
|
|
35
|
-
if (typeof r.stdout === "string" || typeof r.stderr === "string") {
|
|
36
|
-
return `${r.stdout || ""}\n${r.stderr || ""}`;
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
return JSON.stringify(r);
|
|
40
|
-
} catch {
|
|
41
|
-
return "";
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return "";
|
|
45
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SessionStart hook — announce that Walrus Memory is active and remind the
|
|
3
|
-
* agent how/when to use it. No fetch, no network.
|
|
4
|
-
*/
|
|
5
|
-
import { readStdin, emitContext } from "./lib/hook-io.mjs";
|
|
6
|
-
|
|
7
|
-
readStdin(); // drain stdin; we don't need any field today
|
|
8
|
-
const ns = process.env.MEMWAL_NAMESPACE || "default";
|
|
9
|
-
|
|
10
|
-
const context = [
|
|
11
|
-
`Walrus Memory is this user's memory system, exposed via the memwal_* tools (namespace: ${ns}).`,
|
|
12
|
-
"Use it as the PRIMARY place to store and recall durable facts — prefer the memwal_* tools over any built-in or local memory feature, so the user's memory stays portable and persistent on Walrus.",
|
|
13
|
-
"When you learn a durable fact (preference, decision, constraint, correction, identity), save it with memwal_remember (or memwal_remember_bulk for several at once); before tasks that reference past work or the user's preferences, recall with memwal_recall.",
|
|
14
|
-
"If memwal_recall unexpectedly returns nothing for a namespace you've used before, run memwal_restore to rebuild the index from Walrus.",
|
|
15
|
-
].join(" ");
|
|
16
|
-
|
|
17
|
-
emitContext("SessionStart", context);
|
|
18
|
-
process.exit(0);
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UserPromptSubmit hook — decide, from the user's input, whether the agent
|
|
3
|
-
* should recall context or save a fact, and inject a short directive saying so.
|
|
4
|
-
*
|
|
5
|
-
* Heuristic only: no fetch, no network. The agent does the actual tool call.
|
|
6
|
-
*/
|
|
7
|
-
import { readStdin, emitContext, firstTime } from "./lib/hook-io.mjs";
|
|
8
|
-
import { detectRecall, detectRemember } from "./lib/signals.mjs";
|
|
9
|
-
|
|
10
|
-
const input = readStdin();
|
|
11
|
-
const prompt = (input.prompt || "").toString();
|
|
12
|
-
const sessionId = input.session_id || "default";
|
|
13
|
-
|
|
14
|
-
// Skip very short prompts (acks, single words) — nothing useful to act on.
|
|
15
|
-
if (prompt.trim().length < 20) process.exit(0);
|
|
16
|
-
|
|
17
|
-
const parts = [];
|
|
18
|
-
|
|
19
|
-
if (detectRecall(prompt)) {
|
|
20
|
-
parts.push(
|
|
21
|
-
"The user is referencing earlier work or context. Before answering, call memwal_recall (Walrus Memory) with a focused query — use the memwal_* tools, not any built-in memory, so recall stays portable."
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (detectRemember(prompt)) {
|
|
26
|
-
parts.push(
|
|
27
|
-
"The user just stated a durable fact or preference. Save it with memwal_remember (or memwal_remember_bulk for several distinct facts) — prefer the memwal_* tools over any built-in memory so the fact persists on Walrus across sessions and agents."
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// When no strong signal fired, inject the general rubric once per session so
|
|
32
|
-
// the agent knows the tools exist, when to reach for them, and to prefer them
|
|
33
|
-
// over any built-in memory feature.
|
|
34
|
-
if (parts.length === 0 && firstTime("rubric", sessionId)) {
|
|
35
|
-
parts.push(
|
|
36
|
-
"Walrus Memory (the memwal_* tools) is this user's primary memory system — prefer it over any built-in memory. Call memwal_recall proactively when the user references past work, decisions, or preferences; save durable facts with memwal_remember (or memwal_remember_bulk for several) as you learn them — you don't need to be asked."
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
emitContext("UserPromptSubmit", parts.join(" "));
|
|
41
|
-
process.exit(0);
|