@mysten-incubation/memwal 0.0.1 → 0.0.2-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/dist/manual.d.ts +33 -0
- package/dist/manual.d.ts.map +1 -1
- package/dist/manual.js +83 -15
- package/dist/manual.js.map +1 -1
- package/dist/memwal.d.ts +49 -5
- package/dist/memwal.d.ts.map +1 -1
- package/dist/memwal.js +257 -35
- package/dist/memwal.js.map +1 -1
- package/dist/types.d.ts +10 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +31 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +91 -1
- package/dist/utils.js.map +1 -1
- package/package.json +4 -9
package/dist/manual.d.ts
CHANGED
|
@@ -52,6 +52,11 @@ export declare class MemWalManual {
|
|
|
52
52
|
* @param config.accountId - MemWalAccount object ID (for SEAL seal_approve)
|
|
53
53
|
*/
|
|
54
54
|
static create(config: MemWalManualConfig): MemWalManual;
|
|
55
|
+
/**
|
|
56
|
+
* Securely wipe the delegate private and public keys from memory.
|
|
57
|
+
* Prevents key extraction from V8 heap dumps.
|
|
58
|
+
*/
|
|
59
|
+
destroy(): void;
|
|
55
60
|
/** Whether this client uses a connected wallet signer (vs raw keypair) */
|
|
56
61
|
get isWalletMode(): boolean;
|
|
57
62
|
private getSuiClient;
|
|
@@ -61,6 +66,8 @@ export declare class MemWalManual {
|
|
|
61
66
|
/** Sign and execute a transaction — via wallet popup or programmatic keypair */
|
|
62
67
|
private signAndExecuteTransaction;
|
|
63
68
|
private getSealClient;
|
|
69
|
+
/** MED-10: SEAL threshold — must match sidecar SEAL_THRESHOLD (default 2). */
|
|
70
|
+
private get sealThreshold();
|
|
64
71
|
private getWalrusClient;
|
|
65
72
|
/**
|
|
66
73
|
* Remember (hybrid flow):
|
|
@@ -80,10 +87,36 @@ export declare class MemWalManual {
|
|
|
80
87
|
/** Create a signer adapter — either from wallet or keypair */
|
|
81
88
|
private createSigner;
|
|
82
89
|
private embed;
|
|
90
|
+
/**
|
|
91
|
+
* SEAL-encrypt a payload.
|
|
92
|
+
*
|
|
93
|
+
* LOW-24: The `id` passed to SEAL is the on-chain policy identifier used
|
|
94
|
+
* by `seal_approve` to gate decryption. Previously this was just the
|
|
95
|
+
* owner's Sui address, which meant every memory the owner ever encrypted
|
|
96
|
+
* shared one decryption scope — a delegate authorized for namespace "A"
|
|
97
|
+
* could obtain keys for namespace "B" ciphertext.
|
|
98
|
+
*
|
|
99
|
+
* We now include both the account id and the namespace:
|
|
100
|
+
* id = hex(accountId) || ":" || hex(utf8(namespace))
|
|
101
|
+
*
|
|
102
|
+
* NOTE (breaking change): Ciphertext produced before this fix was scoped
|
|
103
|
+
* by ownerAddress only. Legacy blobs created with the old id will still
|
|
104
|
+
* decrypt against SEAL (the id travels inside the EncryptedObject), but
|
|
105
|
+
* any on-chain `seal_approve` policy that now expects namespace-scoped
|
|
106
|
+
* ids will need to be updated in lockstep.
|
|
107
|
+
*/
|
|
83
108
|
private sealEncrypt;
|
|
84
109
|
private walrusUpload;
|
|
85
110
|
private walrusDownload;
|
|
86
111
|
private getDelegatePublicKey;
|
|
112
|
+
/**
|
|
113
|
+
* Make a signed request to the server.
|
|
114
|
+
*
|
|
115
|
+
* Signature format (LOW-1 + MED-1 + LOW-23):
|
|
116
|
+
* "{timestamp}.{method}.{path_and_query}.{body_sha256}.{nonce}.{account_id}"
|
|
117
|
+
*
|
|
118
|
+
* Headers sent: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id.
|
|
119
|
+
*/
|
|
87
120
|
private signedRequest;
|
|
88
121
|
/**
|
|
89
122
|
* Restore a namespace — server downloads all blobs from Walrus,
|
package/dist/manual.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAElB,oBAAoB,EACpB,kBAAkB,EAElB,aAAa,EAChB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAElB,oBAAoB,EACpB,kBAAkB,EAElB,aAAa,EAChB,MAAM,YAAY,CAAC;AAwBpB,qBAAa,YAAY;IACrB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO;IAgBP;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAIvD;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf,0EAA0E;IAC1E,IAAI,YAAY,IAAI,OAAO,CAE1B;YASa,YAAY;YA8BZ,UAAU;IAaxB,yEAAyE;YAC3D,eAAe;IAQ7B,gFAAgF;YAClE,yBAAyB;YAYzB,aAAa;IAyB3B,8EAA8E;IAC9E,OAAO,KAAK,aAAa,GAExB;YAEa,eAAe;IAyB7B;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuBrF;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6HtG,8DAA8D;YAChD,YAAY;YAuBZ,KAAK;IAsCnB;;;;;;;;;;;;;;;;;OAiBG;YACW,WAAW;YAyBX,YAAY;YAiCZ,cAAc;YAoBd,oBAAoB;IAQlC;;;;;;;OAOG;YACW,aAAa;IA0D3B;;;;;;OAMG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAM/E"}
|
package/dist/manual.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* const result = await memwal.recallManual("food allergies")
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
|
|
29
|
+
import { sha256hex, hexToBytes, bytesToHex, normalizeServerUrl, sanitizeServerError } from "./utils.js";
|
|
30
30
|
// ============================================================
|
|
31
31
|
// Constants
|
|
32
32
|
// ============================================================
|
|
@@ -34,7 +34,8 @@ import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
|
|
|
34
34
|
// Users can override via SEAL_KEY_SERVERS in their environment
|
|
35
35
|
const DEFAULT_KEY_SERVERS = {
|
|
36
36
|
mainnet: [
|
|
37
|
-
"0x145540d931f182fef76467dd8074c9839aea126852d90d18e1556fcbbd1208b6", // Overclock (Open)
|
|
37
|
+
"0x145540d931f182fef76467dd8074c9839aea126852d90d18e1556fcbbd1208b6", // Overclock (Open)
|
|
38
|
+
"0xe0eb52eba9261b96e895bbb4deca10dcd64fbc626a1133017adcd5131353fd10", // Studio Mirai (Open)
|
|
38
39
|
],
|
|
39
40
|
testnet: [
|
|
40
41
|
"0x73d05d62c18d9374e3ea529e8e0ed6161da1a141a94d3f76ae3fe4e99356db75",
|
|
@@ -63,8 +64,10 @@ export class MemWalManual {
|
|
|
63
64
|
if (config.suiPrivateKey && config.walletSigner) {
|
|
64
65
|
throw new Error("MemWalManual: provide suiPrivateKey OR walletSigner, not both");
|
|
65
66
|
}
|
|
66
|
-
this.delegatePrivateKey = hexToBytes(config.key);
|
|
67
|
-
|
|
67
|
+
this.delegatePrivateKey = typeof config.key === "string" ? hexToBytes(config.key) : config.key;
|
|
68
|
+
// LOW-22: default to HTTPS; warn (do not throw) on plaintext HTTP
|
|
69
|
+
// against non-localhost hosts.
|
|
70
|
+
this.serverUrl = normalizeServerUrl(config.serverUrl ?? "https://relayer.memwal.ai/");
|
|
68
71
|
this.walletSigner = config.walletSigner ?? null;
|
|
69
72
|
this.config = config;
|
|
70
73
|
this.namespace = config.namespace ?? "default";
|
|
@@ -84,6 +87,18 @@ export class MemWalManual {
|
|
|
84
87
|
static create(config) {
|
|
85
88
|
return new MemWalManual(config);
|
|
86
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Securely wipe the delegate private and public keys from memory.
|
|
92
|
+
* Prevents key extraction from V8 heap dumps.
|
|
93
|
+
*/
|
|
94
|
+
destroy() {
|
|
95
|
+
if (this.delegatePrivateKey) {
|
|
96
|
+
this.delegatePrivateKey.fill(0);
|
|
97
|
+
}
|
|
98
|
+
if (this.delegatePublicKey) {
|
|
99
|
+
this.delegatePublicKey.fill(0);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
87
102
|
/** Whether this client uses a connected wallet signer (vs raw keypair) */
|
|
88
103
|
get isWalletMode() {
|
|
89
104
|
return this.walletSigner !== null;
|
|
@@ -171,11 +186,15 @@ export class MemWalManual {
|
|
|
171
186
|
objectId: id,
|
|
172
187
|
weight: 1,
|
|
173
188
|
})),
|
|
174
|
-
verifyKeyServers:
|
|
189
|
+
verifyKeyServers: true,
|
|
175
190
|
});
|
|
176
191
|
}
|
|
177
192
|
return this._sealClient;
|
|
178
193
|
}
|
|
194
|
+
/** MED-10: SEAL threshold — must match sidecar SEAL_THRESHOLD (default 2). */
|
|
195
|
+
get sealThreshold() {
|
|
196
|
+
return this.config.sealThreshold ?? 2;
|
|
197
|
+
}
|
|
179
198
|
async getWalrusClient() {
|
|
180
199
|
if (!this._walrusClient) {
|
|
181
200
|
// @ts-ignore — optional peer dependency
|
|
@@ -210,9 +229,11 @@ export class MemWalManual {
|
|
|
210
229
|
throw new Error("Text cannot be empty");
|
|
211
230
|
const ns = namespace ?? this.namespace;
|
|
212
231
|
// Step 1 & 2: Embed + SEAL encrypt concurrently
|
|
232
|
+
// LOW-24: Scope SEAL encryption id by namespace so a delegate key
|
|
233
|
+
// authorized for one namespace cannot unwrap ciphertext for another.
|
|
213
234
|
const [vector, encrypted] = await Promise.all([
|
|
214
235
|
this.embed(text),
|
|
215
|
-
this.sealEncrypt(new TextEncoder().encode(text)),
|
|
236
|
+
this.sealEncrypt(new TextEncoder().encode(text), ns),
|
|
216
237
|
]);
|
|
217
238
|
// Step 3: Send encrypted bytes (base64) + vector to server.
|
|
218
239
|
// Server will upload to Walrus via upload-relay and return the blob_id.
|
|
@@ -278,11 +299,13 @@ export class MemWalManual {
|
|
|
278
299
|
// Create signer (wallet adapter or keypair)
|
|
279
300
|
const signer = await this.createSigner(callerAddress);
|
|
280
301
|
// Create session key ONCE (triggers one wallet popup)
|
|
302
|
+
// HIGH-7 / LOW-13: Reduced from 30 to 5 minutes to limit the exposure
|
|
303
|
+
// window if a session token is compromised.
|
|
281
304
|
try {
|
|
282
305
|
sessionKey = await SessionKey.create({
|
|
283
306
|
address: callerAddress,
|
|
284
307
|
packageId: this.config.packageId,
|
|
285
|
-
ttlMin:
|
|
308
|
+
ttlMin: 5,
|
|
286
309
|
signer,
|
|
287
310
|
suiClient,
|
|
288
311
|
});
|
|
@@ -313,7 +336,7 @@ export class MemWalManual {
|
|
|
313
336
|
ids: [fullId],
|
|
314
337
|
txBytes,
|
|
315
338
|
sessionKey,
|
|
316
|
-
threshold:
|
|
339
|
+
threshold: this.sealThreshold,
|
|
317
340
|
});
|
|
318
341
|
// Decrypt locally
|
|
319
342
|
const plaintext = await sealClient.decrypt({
|
|
@@ -385,13 +408,37 @@ export class MemWalManual {
|
|
|
385
408
|
// ============================================================
|
|
386
409
|
// Internal: SEAL Encrypt
|
|
387
410
|
// ============================================================
|
|
388
|
-
|
|
411
|
+
/**
|
|
412
|
+
* SEAL-encrypt a payload.
|
|
413
|
+
*
|
|
414
|
+
* LOW-24: The `id` passed to SEAL is the on-chain policy identifier used
|
|
415
|
+
* by `seal_approve` to gate decryption. Previously this was just the
|
|
416
|
+
* owner's Sui address, which meant every memory the owner ever encrypted
|
|
417
|
+
* shared one decryption scope — a delegate authorized for namespace "A"
|
|
418
|
+
* could obtain keys for namespace "B" ciphertext.
|
|
419
|
+
*
|
|
420
|
+
* We now include both the account id and the namespace:
|
|
421
|
+
* id = hex(accountId) || ":" || hex(utf8(namespace))
|
|
422
|
+
*
|
|
423
|
+
* NOTE (breaking change): Ciphertext produced before this fix was scoped
|
|
424
|
+
* by ownerAddress only. Legacy blobs created with the old id will still
|
|
425
|
+
* decrypt against SEAL (the id travels inside the EncryptedObject), but
|
|
426
|
+
* any on-chain `seal_approve` policy that now expects namespace-scoped
|
|
427
|
+
* ids will need to be updated in lockstep.
|
|
428
|
+
*/
|
|
429
|
+
async sealEncrypt(plaintext, namespace) {
|
|
389
430
|
const sealClient = await this.getSealClient();
|
|
390
|
-
|
|
431
|
+
// Build a namespace-scoped SEAL id. Hex-encode both components so
|
|
432
|
+
// the id is a stable ASCII hex string (SEAL expects a hex id).
|
|
433
|
+
const accountHex = this.config.accountId.startsWith("0x")
|
|
434
|
+
? this.config.accountId.slice(2)
|
|
435
|
+
: this.config.accountId;
|
|
436
|
+
const nsHex = bytesToHex(new TextEncoder().encode(namespace));
|
|
437
|
+
const scopedId = `${accountHex}${nsHex}`;
|
|
391
438
|
const result = await sealClient.encrypt({
|
|
392
|
-
threshold:
|
|
439
|
+
threshold: this.sealThreshold,
|
|
393
440
|
packageId: this.config.packageId,
|
|
394
|
-
id:
|
|
441
|
+
id: scopedId,
|
|
395
442
|
data: plaintext,
|
|
396
443
|
});
|
|
397
444
|
return new Uint8Array(result.encryptedObject);
|
|
@@ -452,12 +499,24 @@ export class MemWalManual {
|
|
|
452
499
|
}
|
|
453
500
|
return this.delegatePublicKey;
|
|
454
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Make a signed request to the server.
|
|
504
|
+
*
|
|
505
|
+
* Signature format (LOW-1 + MED-1 + LOW-23):
|
|
506
|
+
* "{timestamp}.{method}.{path_and_query}.{body_sha256}.{nonce}.{account_id}"
|
|
507
|
+
*
|
|
508
|
+
* Headers sent: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id.
|
|
509
|
+
*/
|
|
455
510
|
async signedRequest(method, path, body) {
|
|
456
511
|
const ed = await import("@noble/ed25519");
|
|
457
512
|
const timestamp = Math.floor(Date.now() / 1000).toString();
|
|
458
513
|
const bodyStr = JSON.stringify(body);
|
|
459
514
|
const bodySha256 = await sha256hex(bodyStr);
|
|
460
|
-
|
|
515
|
+
// MED-1: per-request nonce for replay protection.
|
|
516
|
+
const nonce = crypto.randomUUID();
|
|
517
|
+
// LOW-23: include x-account-id in the canonical signed message so an
|
|
518
|
+
// intermediary cannot rebind a signed request to a different account.
|
|
519
|
+
const message = `${timestamp}.${method}.${path}.${bodySha256}.${nonce}.${this.config.accountId}`;
|
|
461
520
|
const msgBytes = new TextEncoder().encode(message);
|
|
462
521
|
const signature = await ed.signAsync(msgBytes, this.delegatePrivateKey);
|
|
463
522
|
const publicKey = await this.getDelegatePublicKey();
|
|
@@ -469,12 +528,21 @@ export class MemWalManual {
|
|
|
469
528
|
"x-public-key": bytesToHex(publicKey),
|
|
470
529
|
"x-signature": bytesToHex(signature),
|
|
471
530
|
"x-timestamp": timestamp,
|
|
531
|
+
"x-nonce": nonce,
|
|
532
|
+
"x-account-id": this.config.accountId,
|
|
472
533
|
},
|
|
473
534
|
body: bodyStr,
|
|
474
535
|
});
|
|
475
536
|
if (!res.ok) {
|
|
476
|
-
|
|
477
|
-
|
|
537
|
+
// LOW-26: sanitize server error bodies before re-throwing.
|
|
538
|
+
const raw = await res.text();
|
|
539
|
+
const { message: sanitized, serverCode } = sanitizeServerError(res.status, raw);
|
|
540
|
+
const err = new Error(sanitized);
|
|
541
|
+
err.status = res.status;
|
|
542
|
+
if (serverCode)
|
|
543
|
+
err.serverCode = serverCode;
|
|
544
|
+
err.cause = raw;
|
|
545
|
+
throw err;
|
|
478
546
|
}
|
|
479
547
|
return res.json();
|
|
480
548
|
}
|
package/dist/manual.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
|
package/dist/memwal.d.ts
CHANGED
|
@@ -33,14 +33,23 @@ export declare class MemWal {
|
|
|
33
33
|
private serverUrl;
|
|
34
34
|
private namespace;
|
|
35
35
|
private accountId;
|
|
36
|
+
private sessionCache;
|
|
37
|
+
private serverConfig;
|
|
38
|
+
/** Single-flight guard so concurrent requests share one SessionKey build. */
|
|
39
|
+
private sessionBuildPromise;
|
|
36
40
|
private constructor();
|
|
37
41
|
/**
|
|
38
42
|
* Create a new MemWal client instance.
|
|
39
43
|
*
|
|
40
44
|
* @param config.key - Ed25519 private key (hex string) — the delegate key
|
|
41
|
-
* @param config.serverUrl - Server URL (default:
|
|
45
|
+
* @param config.serverUrl - Server URL (default: https://relayer.memwal.ai/)
|
|
42
46
|
*/
|
|
43
47
|
static create(config: MemWalConfig): MemWal;
|
|
48
|
+
/**
|
|
49
|
+
* Securely wipe the private and public keys from memory.
|
|
50
|
+
* Prevents key extraction from V8 heap dumps.
|
|
51
|
+
*/
|
|
52
|
+
destroy(): void;
|
|
44
53
|
/**
|
|
45
54
|
* Remember something — server handles: verify → embed → encrypt → Walrus upload → store
|
|
46
55
|
*
|
|
@@ -75,6 +84,10 @@ export declare class MemWal {
|
|
|
75
84
|
* Remember (manual mode) — user handles SEAL encrypt, embedding,
|
|
76
85
|
* and Walrus upload externally. Server only stores the vector ↔ blobId mapping.
|
|
77
86
|
*
|
|
87
|
+
* Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
|
|
88
|
+
* this request. Manual-mode handlers on the server never invoke SEAL
|
|
89
|
+
* decrypt, so the key stays client-side as the name implies.
|
|
90
|
+
*
|
|
78
91
|
* @param opts.blobId - Walrus blob ID (user already uploaded encrypted data)
|
|
79
92
|
* @param opts.vector - Embedding vector (user already generated, e.g. 1536-dim)
|
|
80
93
|
* @returns RememberManualResult with id, blob_id, owner
|
|
@@ -95,6 +108,10 @@ export declare class MemWal {
|
|
|
95
108
|
* Server returns matching blobIds + distances.
|
|
96
109
|
* User then downloads from Walrus + SEAL decrypts on their own.
|
|
97
110
|
*
|
|
111
|
+
* Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
|
|
112
|
+
* this request. Server returns blob IDs only; decryption happens entirely
|
|
113
|
+
* on the client.
|
|
114
|
+
*
|
|
98
115
|
* @param opts.vector - Pre-computed query embedding vector
|
|
99
116
|
* @param opts.limit - Max results (default: 10)
|
|
100
117
|
* @returns RecallManualResult with blob_id + distance pairs (no decrypted text)
|
|
@@ -153,6 +170,13 @@ export declare class MemWal {
|
|
|
153
170
|
restore(namespace: string, limit?: number): Promise<RestoreResult>;
|
|
154
171
|
/**
|
|
155
172
|
* Check server health.
|
|
173
|
+
*
|
|
174
|
+
* INFO-7: The health endpoint is currently public/unsigned server-side,
|
|
175
|
+
* but we send the same signed-request envelope as every other call so
|
|
176
|
+
* that (a) the channel is authenticated whenever the server opts in, and
|
|
177
|
+
* (b) a MitM cannot trivially forge a "healthy" response for a client
|
|
178
|
+
* that has no way to tell. If the server ignores the signature headers
|
|
179
|
+
* on `/health`, this is still a harmless no-op.
|
|
156
180
|
*/
|
|
157
181
|
health(): Promise<HealthResult>;
|
|
158
182
|
/**
|
|
@@ -160,14 +184,34 @@ export declare class MemWal {
|
|
|
160
184
|
*/
|
|
161
185
|
getPublicKeyHex(): Promise<string>;
|
|
162
186
|
private getPublicKey;
|
|
187
|
+
private fetchServerConfig;
|
|
188
|
+
private buildSealSessionInner;
|
|
189
|
+
private buildSealSession;
|
|
163
190
|
/**
|
|
164
191
|
* Make a signed request to the server.
|
|
165
192
|
*
|
|
166
|
-
* Signature format:
|
|
167
|
-
*
|
|
193
|
+
* Signature format (LOW-23 updated):
|
|
194
|
+
* "{timestamp}.{method}.{path}.{body_sha256}.{nonce}.{account_id}"
|
|
195
|
+
*
|
|
196
|
+
* Headers: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id
|
|
197
|
+
*
|
|
198
|
+
* The nonce is a UUID v4 generated per-request and tracked server-side
|
|
199
|
+
* in Redis (TTL=600s) to prevent replay attacks.
|
|
200
|
+
*
|
|
201
|
+
* LOW-23: x-account-id is now included in the signed canonical message so
|
|
202
|
+
* an intermediary cannot swap the account hint without invalidating the
|
|
203
|
+
* signature. Server-side verification in services/server/src/auth.rs must
|
|
204
|
+
* use the matching message format.
|
|
205
|
+
*
|
|
206
|
+
* ENG-1696: Callers set `includeDelegateKey: false` on Manual-mode routes
|
|
207
|
+
* so the delegate private key is not transmitted. Manual-mode docstrings
|
|
208
|
+
* promise the key stays client-side; the server does not need it on those
|
|
209
|
+
* routes because Manual-mode handlers never invoke SEAL decrypt.
|
|
168
210
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
211
|
+
* ENG-1697: On Relayer-mode routes the SDK builds a SEAL SessionKey
|
|
212
|
+
* client-side (emitted via `x-seal-session`). The SessionKey is ephemeral
|
|
213
|
+
* (5-min TTL, scoped to the server's `packageId`) so a wire capture has
|
|
214
|
+
* a bounded blast radius. Requires `@mysten/seal` and `@mysten/sui`.
|
|
171
215
|
*/
|
|
172
216
|
private signedRequest;
|
|
173
217
|
}
|
package/dist/memwal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EAChB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EAChB,MAAM,YAAY,CAAC;AAyCpB,qBAAa,MAAM;IACf,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAI1B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAA6B;IACjD,6EAA6E;IAC7E,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO;IAUP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAI3C;;;OAGG;IACH,OAAO,IAAI,IAAI;IAiBf;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB1F;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAahF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAa1E;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvE;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAO5E;;;;;;;;;OASG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAerC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;YAS1B,YAAY;YA8BZ,iBAAiB;YAkBjB,qBAAqB;YAsFrB,gBAAgB;IAc9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,aAAa;CAiE9B"}
|
package/dist/memwal.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* console.log(result.results[0].text) // "I'm allergic to peanuts"
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
|
|
29
|
+
import { sha256hex, hexToBytes, bytesToHex, normalizeServerUrl, sanitizeServerError } from "./utils.js";
|
|
30
30
|
// ============================================================
|
|
31
31
|
// Ed25519 Signing (lazy-loaded)
|
|
32
32
|
// ============================================================
|
|
@@ -37,30 +37,57 @@ async function getEd() {
|
|
|
37
37
|
}
|
|
38
38
|
return _ed;
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
//
|
|
40
|
+
const SEAL_SESSION_TTL_MIN = 5;
|
|
41
|
+
// Refresh 30 seconds before SEAL's 5-minute TTL to avoid the window where
|
|
42
|
+
// the client thinks the session is valid but a just-received request hits
|
|
43
|
+
// a key server that sees it as expired.
|
|
44
|
+
const SEAL_SESSION_SAFETY_MARGIN_MS = 30_000;
|
|
43
45
|
export class MemWal {
|
|
44
46
|
privateKey;
|
|
45
47
|
publicKey = null;
|
|
46
48
|
serverUrl;
|
|
47
49
|
namespace;
|
|
48
50
|
accountId;
|
|
51
|
+
// ENG-1697 state — all internal, never surfaced to user code.
|
|
52
|
+
// The public API (`MemWal.create({ key, accountId })`) is unchanged.
|
|
53
|
+
sessionCache = null;
|
|
54
|
+
serverConfig = null;
|
|
55
|
+
/** Single-flight guard so concurrent requests share one SessionKey build. */
|
|
56
|
+
sessionBuildPromise = null;
|
|
49
57
|
constructor(config) {
|
|
50
|
-
this.privateKey = hexToBytes(config.key);
|
|
58
|
+
this.privateKey = typeof config.key === "string" ? hexToBytes(config.key) : config.key;
|
|
51
59
|
this.accountId = config.accountId;
|
|
52
|
-
|
|
60
|
+
// LOW-22: default to HTTPS for production usage; normalizeServerUrl
|
|
61
|
+
// warns (does not throw) if a user passes plain http:// for a
|
|
62
|
+
// non-localhost host.
|
|
63
|
+
this.serverUrl = normalizeServerUrl(config.serverUrl ?? "https://relayer.memwal.ai/");
|
|
53
64
|
this.namespace = config.namespace ?? "default";
|
|
54
65
|
}
|
|
55
66
|
/**
|
|
56
67
|
* Create a new MemWal client instance.
|
|
57
68
|
*
|
|
58
69
|
* @param config.key - Ed25519 private key (hex string) — the delegate key
|
|
59
|
-
* @param config.serverUrl - Server URL (default:
|
|
70
|
+
* @param config.serverUrl - Server URL (default: https://relayer.memwal.ai/)
|
|
60
71
|
*/
|
|
61
72
|
static create(config) {
|
|
62
73
|
return new MemWal(config);
|
|
63
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Securely wipe the private and public keys from memory.
|
|
77
|
+
* Prevents key extraction from V8 heap dumps.
|
|
78
|
+
*/
|
|
79
|
+
destroy() {
|
|
80
|
+
if (this.privateKey) {
|
|
81
|
+
this.privateKey.fill(0);
|
|
82
|
+
}
|
|
83
|
+
if (this.publicKey) {
|
|
84
|
+
this.publicKey.fill(0);
|
|
85
|
+
}
|
|
86
|
+
// ENG-1697: drop cached session material too — once destroyed the
|
|
87
|
+
// instance must not leak authorization tokens either.
|
|
88
|
+
this.sessionCache = null;
|
|
89
|
+
this.serverConfig = null;
|
|
90
|
+
}
|
|
64
91
|
// ============================================================
|
|
65
92
|
// Core API
|
|
66
93
|
// ============================================================
|
|
@@ -99,11 +126,18 @@ export class MemWal {
|
|
|
99
126
|
* ```
|
|
100
127
|
*/
|
|
101
128
|
async recall(query, limit = 10, namespace) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
129
|
+
const ac = new AbortController();
|
|
130
|
+
const tid = setTimeout(() => ac.abort(), 15000);
|
|
131
|
+
try {
|
|
132
|
+
return await this.signedRequest("POST", "/api/recall", {
|
|
133
|
+
query,
|
|
134
|
+
limit,
|
|
135
|
+
namespace: namespace ?? this.namespace,
|
|
136
|
+
}, { signal: ac.signal });
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
clearTimeout(tid);
|
|
140
|
+
}
|
|
107
141
|
}
|
|
108
142
|
// ============================================================
|
|
109
143
|
// Manual API (user handles SEAL + embedding + Walrus)
|
|
@@ -112,6 +146,10 @@ export class MemWal {
|
|
|
112
146
|
* Remember (manual mode) — user handles SEAL encrypt, embedding,
|
|
113
147
|
* and Walrus upload externally. Server only stores the vector ↔ blobId mapping.
|
|
114
148
|
*
|
|
149
|
+
* Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
|
|
150
|
+
* this request. Manual-mode handlers on the server never invoke SEAL
|
|
151
|
+
* decrypt, so the key stays client-side as the name implies.
|
|
152
|
+
*
|
|
115
153
|
* @param opts.blobId - Walrus blob ID (user already uploaded encrypted data)
|
|
116
154
|
* @param opts.vector - Embedding vector (user already generated, e.g. 1536-dim)
|
|
117
155
|
* @returns RememberManualResult with id, blob_id, owner
|
|
@@ -131,13 +169,17 @@ export class MemWal {
|
|
|
131
169
|
blob_id: opts.blobId,
|
|
132
170
|
vector: opts.vector,
|
|
133
171
|
namespace: opts.namespace ?? this.namespace,
|
|
134
|
-
});
|
|
172
|
+
}, { includeDelegateKey: false });
|
|
135
173
|
}
|
|
136
174
|
/**
|
|
137
175
|
* Recall (manual mode) — user provides a pre-computed query vector.
|
|
138
176
|
* Server returns matching blobIds + distances.
|
|
139
177
|
* User then downloads from Walrus + SEAL decrypts on their own.
|
|
140
178
|
*
|
|
179
|
+
* Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
|
|
180
|
+
* this request. Server returns blob IDs only; decryption happens entirely
|
|
181
|
+
* on the client.
|
|
182
|
+
*
|
|
141
183
|
* @param opts.vector - Pre-computed query embedding vector
|
|
142
184
|
* @param opts.limit - Max results (default: 10)
|
|
143
185
|
* @returns RecallManualResult with blob_id + distance pairs (no decrypted text)
|
|
@@ -163,7 +205,7 @@ export class MemWal {
|
|
|
163
205
|
vector: opts.vector,
|
|
164
206
|
limit: opts.limit ?? 10,
|
|
165
207
|
namespace: opts.namespace ?? this.namespace,
|
|
166
|
-
});
|
|
208
|
+
}, { includeDelegateKey: false });
|
|
167
209
|
}
|
|
168
210
|
/**
|
|
169
211
|
* Generate an embedding vector for text (no storage).
|
|
@@ -214,13 +256,28 @@ export class MemWal {
|
|
|
214
256
|
}
|
|
215
257
|
/**
|
|
216
258
|
* Check server health.
|
|
259
|
+
*
|
|
260
|
+
* INFO-7: The health endpoint is currently public/unsigned server-side,
|
|
261
|
+
* but we send the same signed-request envelope as every other call so
|
|
262
|
+
* that (a) the channel is authenticated whenever the server opts in, and
|
|
263
|
+
* (b) a MitM cannot trivially forge a "healthy" response for a client
|
|
264
|
+
* that has no way to tell. If the server ignores the signature headers
|
|
265
|
+
* on `/health`, this is still a harmless no-op.
|
|
217
266
|
*/
|
|
218
267
|
async health() {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
268
|
+
try {
|
|
269
|
+
return await this.signedRequest("GET", "/health", {});
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
// Fall back to a plain GET for servers that reject bodies on GET /health.
|
|
273
|
+
const res = await fetch(`${this.serverUrl}/health`);
|
|
274
|
+
if (!res.ok) {
|
|
275
|
+
throw err instanceof Error
|
|
276
|
+
? err
|
|
277
|
+
: new Error(`Health check failed: ${res.status}`);
|
|
278
|
+
}
|
|
279
|
+
return res.json();
|
|
222
280
|
}
|
|
223
|
-
return res.json();
|
|
224
281
|
}
|
|
225
282
|
/**
|
|
226
283
|
* Get the public key (hex string).
|
|
@@ -239,43 +296,208 @@ export class MemWal {
|
|
|
239
296
|
}
|
|
240
297
|
return this.publicKey;
|
|
241
298
|
}
|
|
299
|
+
// ============================================================
|
|
300
|
+
// ENG-1697: SEAL SessionKey discovery & build
|
|
301
|
+
//
|
|
302
|
+
// The SDK used to transmit the raw delegate private key in
|
|
303
|
+
// `x-delegate-key` on every request. That credential, once captured,
|
|
304
|
+
// lets an attacker retroactively decrypt every ciphertext the account
|
|
305
|
+
// ever produced (until the user rotates on-chain) and sign arbitrary
|
|
306
|
+
// Sui transactions from the delegate address.
|
|
307
|
+
//
|
|
308
|
+
// We now build a SEAL `SessionKey` on the client (ephemeral, scoped to
|
|
309
|
+
// a single `packageId`, 5-minute TTL, signed by the delegate key) and
|
|
310
|
+
// ship only the exported session bytes via `x-seal-session`. The raw
|
|
311
|
+
// private key never leaves the client.
|
|
312
|
+
//
|
|
313
|
+
// `packageId` is fetched from the server's public `/config` endpoint
|
|
314
|
+
// the first time it's needed so the user API (`new MemWal({ key,
|
|
315
|
+
// accountId })`) stays unchanged — past users upgrading to v0.4 do not
|
|
316
|
+
// have to touch their config.
|
|
317
|
+
//
|
|
318
|
+
// Requires `@mysten/seal` and `@mysten/sui` peer dependencies.
|
|
319
|
+
// ============================================================
|
|
320
|
+
async fetchServerConfig() {
|
|
321
|
+
if (this.serverConfig)
|
|
322
|
+
return this.serverConfig;
|
|
323
|
+
const res = await fetch(`${this.serverUrl}/config`, { method: "GET" });
|
|
324
|
+
if (!res.ok) {
|
|
325
|
+
throw new Error(`GET /config returned ${res.status}`);
|
|
326
|
+
}
|
|
327
|
+
const body = (await res.json());
|
|
328
|
+
if (!body.packageId || !body.network || !body.suiRpcUrl) {
|
|
329
|
+
throw new Error("GET /config response missing packageId / network / suiRpcUrl");
|
|
330
|
+
}
|
|
331
|
+
this.serverConfig = {
|
|
332
|
+
packageId: body.packageId,
|
|
333
|
+
network: body.network,
|
|
334
|
+
suiRpcUrl: body.suiRpcUrl,
|
|
335
|
+
};
|
|
336
|
+
return this.serverConfig;
|
|
337
|
+
}
|
|
338
|
+
async buildSealSessionInner() {
|
|
339
|
+
const cfg = await this.fetchServerConfig();
|
|
340
|
+
// @mysten/sui renamed/moved `SuiClient` between minor versions:
|
|
341
|
+
// - pre-2.6: `SuiClient` in `@mysten/sui/client`
|
|
342
|
+
// - 2.6+: `SuiJsonRpcClient` in `@mysten/sui/jsonRpc`
|
|
343
|
+
// Probe both paths so the SDK works across the supported range.
|
|
344
|
+
const sealMod = (await import("@mysten/seal"));
|
|
345
|
+
const ed25519Mod = (await import("@mysten/sui/keypairs/ed25519"));
|
|
346
|
+
const SessionKey = sealMod.SessionKey;
|
|
347
|
+
const Ed25519Keypair = ed25519Mod.Ed25519Keypair;
|
|
348
|
+
let SuiClient = undefined;
|
|
349
|
+
try {
|
|
350
|
+
const mod = (await import("@mysten/sui/client"));
|
|
351
|
+
SuiClient = mod.SuiClient;
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
/* not present on this version */
|
|
355
|
+
}
|
|
356
|
+
if (typeof SuiClient !== "function") {
|
|
357
|
+
try {
|
|
358
|
+
const mod = (await import("@mysten/sui/jsonRpc"));
|
|
359
|
+
SuiClient = mod.SuiJsonRpcClient ?? mod.SuiClient;
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
/* not present on this version either */
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (typeof SuiClient !== "function" || typeof Ed25519Keypair !== "function") {
|
|
366
|
+
throw new Error("SuiClient/SuiJsonRpcClient or Ed25519Keypair not found in @mysten/sui. " +
|
|
367
|
+
"Ensure @mysten/sui >=2.5.0 and @mysten/seal >=1.1.0 are installed.");
|
|
368
|
+
}
|
|
369
|
+
const keypair = Ed25519Keypair.fromSecretKey(this.privateKey);
|
|
370
|
+
const suiClient = new SuiClient({ url: cfg.suiRpcUrl });
|
|
371
|
+
const session = await SessionKey.create({
|
|
372
|
+
address: keypair.getPublicKey().toSuiAddress(),
|
|
373
|
+
packageId: cfg.packageId,
|
|
374
|
+
ttlMin: SEAL_SESSION_TTL_MIN,
|
|
375
|
+
signer: keypair,
|
|
376
|
+
suiClient: suiClient,
|
|
377
|
+
});
|
|
378
|
+
// Eagerly sign the personal message so the exported envelope is
|
|
379
|
+
// fully self-contained. `SessionKey.create()` defers this signing
|
|
380
|
+
// until first use, which would break the migration: the sidecar
|
|
381
|
+
// imports without a signer and must be able to get a certificate
|
|
382
|
+
// from the exported state alone. Calling
|
|
383
|
+
// setPersonalMessageSignature() here populates the
|
|
384
|
+
// `personalMessageSignature` field in the subsequent export().
|
|
385
|
+
const personalMessage = session.getPersonalMessage();
|
|
386
|
+
const signResult = await keypair.signPersonalMessage(personalMessage);
|
|
387
|
+
await session.setPersonalMessageSignature(signResult.signature);
|
|
388
|
+
const exported = session.export();
|
|
389
|
+
// SEAL intentionally installs a throwing `toJSON` on the
|
|
390
|
+
// exported object to catch accidental serialization. The
|
|
391
|
+
// migration to `x-seal-session` IS the intended on-wire
|
|
392
|
+
// format, so we project the primitive fields into a fresh
|
|
393
|
+
// object before stringifying. The sidecar's
|
|
394
|
+
// `SessionKey.import()` expects this exact shape.
|
|
395
|
+
const jsonStr = JSON.stringify({
|
|
396
|
+
address: exported.address,
|
|
397
|
+
packageId: exported.packageId,
|
|
398
|
+
mvrName: exported.mvrName,
|
|
399
|
+
creationTimeMs: exported.creationTimeMs,
|
|
400
|
+
ttlMin: exported.ttlMin,
|
|
401
|
+
personalMessageSignature: exported.personalMessageSignature,
|
|
402
|
+
sessionKey: exported.sessionKey,
|
|
403
|
+
});
|
|
404
|
+
const bytes = typeof btoa === "function"
|
|
405
|
+
? btoa(jsonStr)
|
|
406
|
+
: Buffer.from(jsonStr, "utf8").toString("base64");
|
|
407
|
+
this.sessionCache = {
|
|
408
|
+
bytes,
|
|
409
|
+
expiresAt: Date.now() +
|
|
410
|
+
SEAL_SESSION_TTL_MIN * 60_000 -
|
|
411
|
+
SEAL_SESSION_SAFETY_MARGIN_MS,
|
|
412
|
+
};
|
|
413
|
+
return bytes;
|
|
414
|
+
}
|
|
415
|
+
async buildSealSession() {
|
|
416
|
+
// Fast path: cached session still fresh.
|
|
417
|
+
if (this.sessionCache && Date.now() < this.sessionCache.expiresAt) {
|
|
418
|
+
return this.sessionCache.bytes;
|
|
419
|
+
}
|
|
420
|
+
// Single-flight: concurrent requests share one build.
|
|
421
|
+
if (this.sessionBuildPromise)
|
|
422
|
+
return this.sessionBuildPromise;
|
|
423
|
+
this.sessionBuildPromise = this.buildSealSessionInner().finally(() => {
|
|
424
|
+
this.sessionBuildPromise = null;
|
|
425
|
+
});
|
|
426
|
+
return this.sessionBuildPromise;
|
|
427
|
+
}
|
|
242
428
|
/**
|
|
243
429
|
* Make a signed request to the server.
|
|
244
430
|
*
|
|
245
|
-
* Signature format:
|
|
246
|
-
*
|
|
431
|
+
* Signature format (LOW-23 updated):
|
|
432
|
+
* "{timestamp}.{method}.{path}.{body_sha256}.{nonce}.{account_id}"
|
|
247
433
|
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
434
|
+
* Headers: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id
|
|
435
|
+
*
|
|
436
|
+
* The nonce is a UUID v4 generated per-request and tracked server-side
|
|
437
|
+
* in Redis (TTL=600s) to prevent replay attacks.
|
|
438
|
+
*
|
|
439
|
+
* LOW-23: x-account-id is now included in the signed canonical message so
|
|
440
|
+
* an intermediary cannot swap the account hint without invalidating the
|
|
441
|
+
* signature. Server-side verification in services/server/src/auth.rs must
|
|
442
|
+
* use the matching message format.
|
|
443
|
+
*
|
|
444
|
+
* ENG-1696: Callers set `includeDelegateKey: false` on Manual-mode routes
|
|
445
|
+
* so the delegate private key is not transmitted. Manual-mode docstrings
|
|
446
|
+
* promise the key stays client-side; the server does not need it on those
|
|
447
|
+
* routes because Manual-mode handlers never invoke SEAL decrypt.
|
|
448
|
+
*
|
|
449
|
+
* ENG-1697: On Relayer-mode routes the SDK builds a SEAL SessionKey
|
|
450
|
+
* client-side (emitted via `x-seal-session`). The SessionKey is ephemeral
|
|
451
|
+
* (5-min TTL, scoped to the server's `packageId`) so a wire capture has
|
|
452
|
+
* a bounded blast radius. Requires `@mysten/seal` and `@mysten/sui`.
|
|
250
453
|
*/
|
|
251
|
-
async signedRequest(method, path, body) {
|
|
454
|
+
async signedRequest(method, path, body, options = {}) {
|
|
252
455
|
const ed = await getEd();
|
|
253
456
|
const timestamp = Math.floor(Date.now() / 1000).toString();
|
|
254
457
|
const bodyStr = JSON.stringify(body);
|
|
255
458
|
const bodySha256 = await sha256hex(bodyStr);
|
|
256
|
-
//
|
|
257
|
-
const
|
|
459
|
+
// MED-1 fix: Generate per-request nonce (UUID v4) for replay protection
|
|
460
|
+
const nonce = crypto.randomUUID();
|
|
461
|
+
// LOW-23: Build message to sign — now includes nonce AND account id
|
|
462
|
+
const message = `${timestamp}.${method}.${path}.${bodySha256}.${nonce}.${this.accountId}`;
|
|
258
463
|
const msgBytes = new TextEncoder().encode(message);
|
|
259
464
|
// Sign with Ed25519
|
|
260
465
|
const signature = await ed.signAsync(msgBytes, this.privateKey);
|
|
261
466
|
const publicKey = await this.getPublicKey();
|
|
262
467
|
// Make HTTP request
|
|
263
468
|
const url = `${this.serverUrl}${path}`;
|
|
469
|
+
const headers = {
|
|
470
|
+
"Content-Type": "application/json",
|
|
471
|
+
"x-public-key": bytesToHex(publicKey),
|
|
472
|
+
"x-signature": bytesToHex(signature),
|
|
473
|
+
"x-timestamp": timestamp,
|
|
474
|
+
"x-nonce": nonce, // MED-1: replay protection
|
|
475
|
+
"x-account-id": this.accountId,
|
|
476
|
+
};
|
|
477
|
+
// ENG-1696 / ENG-1697: attach a SEAL credential only on Relayer-
|
|
478
|
+
// mode routes where the server needs it for server-side SEAL
|
|
479
|
+
// decrypt. Manual-mode methods (rememberManual, recallManual) opt
|
|
480
|
+
// out and transmit no decrypt credential at all.
|
|
481
|
+
if (options.includeDelegateKey !== false) {
|
|
482
|
+
headers["x-seal-session"] = await this.buildSealSession();
|
|
483
|
+
}
|
|
264
484
|
const res = await fetch(url, {
|
|
265
485
|
method,
|
|
266
|
-
headers
|
|
267
|
-
"Content-Type": "application/json",
|
|
268
|
-
"x-public-key": bytesToHex(publicKey),
|
|
269
|
-
"x-signature": bytesToHex(signature),
|
|
270
|
-
"x-timestamp": timestamp,
|
|
271
|
-
"x-delegate-key": bytesToHex(this.privateKey),
|
|
272
|
-
"x-account-id": this.accountId,
|
|
273
|
-
},
|
|
486
|
+
headers,
|
|
274
487
|
body: bodyStr,
|
|
488
|
+
signal: options.signal,
|
|
275
489
|
});
|
|
276
490
|
if (!res.ok) {
|
|
277
|
-
|
|
278
|
-
|
|
491
|
+
// LOW-26: sanitize server error bodies before surfacing to callers.
|
|
492
|
+
const raw = await res.text();
|
|
493
|
+
const { message, serverCode } = sanitizeServerError(res.status, raw);
|
|
494
|
+
const err = new Error(message);
|
|
495
|
+
err.status = res.status;
|
|
496
|
+
if (serverCode)
|
|
497
|
+
err.serverCode = serverCode;
|
|
498
|
+
// Preserve raw body on `cause` for in-process debugging only.
|
|
499
|
+
err.cause = raw;
|
|
500
|
+
throw err;
|
|
279
501
|
}
|
|
280
502
|
return res.json();
|
|
281
503
|
}
|
package/dist/memwal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memwal.js","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAgBH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"memwal.js","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* the MemWal Rust server (TEE).
|
|
6
6
|
*/
|
|
7
7
|
export interface MemWalConfig {
|
|
8
|
-
/** Ed25519 private key (hex string). This is the delegate key from app.memwal.com */
|
|
9
|
-
key: string;
|
|
8
|
+
/** Ed25519 private key (hex string or Uint8Array). This is the delegate key from app.memwal.com */
|
|
9
|
+
key: string | Uint8Array;
|
|
10
10
|
/** MemWalAccount object ID on Sui (ensures correct account when delegate key exists in multiple accounts) */
|
|
11
11
|
accountId: string;
|
|
12
12
|
/** Server URL (default: http://localhost:8000) */
|
|
@@ -93,8 +93,8 @@ export interface RestoreResult {
|
|
|
93
93
|
}
|
|
94
94
|
/** Config for MemWalManual (full client-side: SEAL + Walrus + embedding) */
|
|
95
95
|
export interface MemWalManualConfig {
|
|
96
|
-
/** Ed25519 delegate private key (hex) for server auth */
|
|
97
|
-
key: string;
|
|
96
|
+
/** Ed25519 delegate private key (hex or Uint8Array) for server auth */
|
|
97
|
+
key: string | Uint8Array;
|
|
98
98
|
/** Server URL (default: http://localhost:8000) */
|
|
99
99
|
serverUrl?: string;
|
|
100
100
|
/**
|
|
@@ -132,6 +132,12 @@ export interface MemWalManualConfig {
|
|
|
132
132
|
* If omitted, uses built-in defaults for the selected suiNetwork.
|
|
133
133
|
*/
|
|
134
134
|
sealKeyServers?: string[];
|
|
135
|
+
/**
|
|
136
|
+
* SEAL threshold — number of key server shares required for encrypt/decrypt.
|
|
137
|
+
* Must be ≤ number of entries in sealKeyServers.
|
|
138
|
+
* Default: 2 (matches sidecar SEAL_THRESHOLD default).
|
|
139
|
+
*/
|
|
140
|
+
sealThreshold?: number;
|
|
135
141
|
/** Walrus storage epochs (default: 50) */
|
|
136
142
|
walrusEpochs?: number;
|
|
137
143
|
/** Walrus aggregator URL for direct blob downloads (default: mainnet aggregator) */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,YAAY;IACzB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -7,8 +7,39 @@
|
|
|
7
7
|
* Isomorphic SHA-256 hash — uses Web Crypto API (browser) or Node.js crypto (server).
|
|
8
8
|
*/
|
|
9
9
|
export declare function sha256hex(data: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Decode a hex string into bytes.
|
|
12
|
+
*
|
|
13
|
+
* LOW-25: Strict validation — rejects non-hex characters, odd-length input,
|
|
14
|
+
* and empty strings. Previously, `parseInt("zz", 16)` silently produced `NaN`
|
|
15
|
+
* which was coerced to `0`, yielding a wrong-but-valid-looking key.
|
|
16
|
+
*/
|
|
10
17
|
export declare function hexToBytes(hex: string): Uint8Array;
|
|
11
18
|
export declare function bytesToHex(bytes: Uint8Array): string;
|
|
19
|
+
/**
|
|
20
|
+
* LOW-22: Normalize a user-supplied server URL.
|
|
21
|
+
*
|
|
22
|
+
* - Strips trailing slash.
|
|
23
|
+
* - Emits a console.warn when a non-HTTPS URL is used against a
|
|
24
|
+
* non-localhost host (plaintext HTTP on the open internet exposes
|
|
25
|
+
* signed requests and any server-side secrets to passive interception).
|
|
26
|
+
* - Localhost / 127.0.0.1 / ::1 are exempt from the warning (common in dev).
|
|
27
|
+
* - Does NOT throw — explicit user-supplied `http://` is honored.
|
|
28
|
+
*/
|
|
29
|
+
export declare function normalizeServerUrl(url: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* LOW-26: Sanitize a raw server error body before surfacing it to callers.
|
|
32
|
+
*
|
|
33
|
+
* - Strips ASCII control characters.
|
|
34
|
+
* - Truncates to at most 200 chars so stack traces / dumps don't leak.
|
|
35
|
+
* - Leaves the untrimmed payload accessible via the returned `raw`
|
|
36
|
+
* field for debug logging (never included in the thrown message).
|
|
37
|
+
*/
|
|
38
|
+
export declare function sanitizeServerError(status: number, rawBody: string): {
|
|
39
|
+
message: string;
|
|
40
|
+
raw: string;
|
|
41
|
+
serverCode?: string;
|
|
42
|
+
};
|
|
12
43
|
/**
|
|
13
44
|
* Derive the Sui address from an Ed25519 delegate key (private key hex).
|
|
14
45
|
*
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7D;AAMD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7D;AAMD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAqBlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBtD;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAwBvD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGvF"}
|
package/dist/utils.js
CHANGED
|
@@ -25,8 +25,27 @@ export async function sha256hex(data) {
|
|
|
25
25
|
// ============================================================
|
|
26
26
|
// Hex Encoding
|
|
27
27
|
// ============================================================
|
|
28
|
+
/**
|
|
29
|
+
* Decode a hex string into bytes.
|
|
30
|
+
*
|
|
31
|
+
* LOW-25: Strict validation — rejects non-hex characters, odd-length input,
|
|
32
|
+
* and empty strings. Previously, `parseInt("zz", 16)` silently produced `NaN`
|
|
33
|
+
* which was coerced to `0`, yielding a wrong-but-valid-looking key.
|
|
34
|
+
*/
|
|
28
35
|
export function hexToBytes(hex) {
|
|
29
|
-
|
|
36
|
+
if (typeof hex !== "string") {
|
|
37
|
+
throw new TypeError("hexToBytes: expected string input");
|
|
38
|
+
}
|
|
39
|
+
const clean = hex.startsWith("0x") || hex.startsWith("0X") ? hex.slice(2) : hex;
|
|
40
|
+
if (clean.length === 0) {
|
|
41
|
+
throw new Error("hexToBytes: empty hex string");
|
|
42
|
+
}
|
|
43
|
+
if (clean.length % 2 !== 0) {
|
|
44
|
+
throw new Error(`hexToBytes: odd-length hex string (length=${clean.length}); hex must have an even number of digits`);
|
|
45
|
+
}
|
|
46
|
+
if (!/^[0-9a-fA-F]+$/.test(clean)) {
|
|
47
|
+
throw new Error("hexToBytes: input contains non-hex characters");
|
|
48
|
+
}
|
|
30
49
|
const bytes = new Uint8Array(clean.length / 2);
|
|
31
50
|
for (let i = 0; i < bytes.length; i++) {
|
|
32
51
|
bytes[i] = parseInt(clean.substring(i * 2, i * 2 + 2), 16);
|
|
@@ -39,6 +58,77 @@ export function bytesToHex(bytes) {
|
|
|
39
58
|
.join("");
|
|
40
59
|
}
|
|
41
60
|
// ============================================================
|
|
61
|
+
// Transport Security Helpers
|
|
62
|
+
// ============================================================
|
|
63
|
+
/**
|
|
64
|
+
* LOW-22: Normalize a user-supplied server URL.
|
|
65
|
+
*
|
|
66
|
+
* - Strips trailing slash.
|
|
67
|
+
* - Emits a console.warn when a non-HTTPS URL is used against a
|
|
68
|
+
* non-localhost host (plaintext HTTP on the open internet exposes
|
|
69
|
+
* signed requests and any server-side secrets to passive interception).
|
|
70
|
+
* - Localhost / 127.0.0.1 / ::1 are exempt from the warning (common in dev).
|
|
71
|
+
* - Does NOT throw — explicit user-supplied `http://` is honored.
|
|
72
|
+
*/
|
|
73
|
+
export function normalizeServerUrl(url) {
|
|
74
|
+
const trimmed = url.replace(/\/$/, "");
|
|
75
|
+
try {
|
|
76
|
+
const parsed = new URL(trimmed);
|
|
77
|
+
const host = parsed.hostname.toLowerCase();
|
|
78
|
+
const isLocal = host === "localhost" ||
|
|
79
|
+
host === "127.0.0.1" ||
|
|
80
|
+
host === "::1" ||
|
|
81
|
+
host.endsWith(".localhost");
|
|
82
|
+
if (parsed.protocol === "http:" && !isLocal) {
|
|
83
|
+
// eslint-disable-next-line no-console
|
|
84
|
+
console.warn(`[memwal] serverUrl "${trimmed}" uses plaintext HTTP on a non-localhost host. ` +
|
|
85
|
+
`Signed requests and any bearer material will be visible to the network. ` +
|
|
86
|
+
`Use https:// in production.`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// invalid URL — let the fetch call surface the error at request time
|
|
91
|
+
}
|
|
92
|
+
return trimmed;
|
|
93
|
+
}
|
|
94
|
+
// ============================================================
|
|
95
|
+
// Error Sanitization (LOW-26)
|
|
96
|
+
// ============================================================
|
|
97
|
+
/**
|
|
98
|
+
* LOW-26: Sanitize a raw server error body before surfacing it to callers.
|
|
99
|
+
*
|
|
100
|
+
* - Strips ASCII control characters.
|
|
101
|
+
* - Truncates to at most 200 chars so stack traces / dumps don't leak.
|
|
102
|
+
* - Leaves the untrimmed payload accessible via the returned `raw`
|
|
103
|
+
* field for debug logging (never included in the thrown message).
|
|
104
|
+
*/
|
|
105
|
+
export function sanitizeServerError(status, rawBody) {
|
|
106
|
+
const MAX = 200;
|
|
107
|
+
let serverCode;
|
|
108
|
+
let text = rawBody;
|
|
109
|
+
// Try to parse JSON error bodies and extract a known code field.
|
|
110
|
+
try {
|
|
111
|
+
const parsed = JSON.parse(rawBody);
|
|
112
|
+
if (parsed && typeof parsed === "object") {
|
|
113
|
+
if (typeof parsed.code === "string")
|
|
114
|
+
serverCode = parsed.code;
|
|
115
|
+
else if (typeof parsed.error === "string")
|
|
116
|
+
serverCode = parsed.error;
|
|
117
|
+
if (typeof parsed.message === "string")
|
|
118
|
+
text = parsed.message;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// not JSON — keep rawBody
|
|
123
|
+
}
|
|
124
|
+
// Strip ASCII control chars (0x00-0x1F, 0x7F) that could corrupt logs.
|
|
125
|
+
// eslint-disable-next-line no-control-regex
|
|
126
|
+
const stripped = text.replace(/[\u0000-\u001F\u007F]/g, " ").trim();
|
|
127
|
+
const truncated = stripped.length > MAX ? `${stripped.slice(0, MAX)}...` : stripped;
|
|
128
|
+
const message = `MemWal server error (${status}): ${truncated || "<no message>"}`;
|
|
129
|
+
return { message, raw: rawBody, serverCode };
|
|
130
|
+
}
|
|
131
|
+
// ============================================================
|
|
42
132
|
// Delegate Key → Sui Address Derivation
|
|
43
133
|
// ============================================================
|
|
44
134
|
/**
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,sDAAsD;IACtD,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D,MAAM,UAAU,UAAU,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mysten-incubation/memwal",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2-dev.0",
|
|
4
4
|
"description": "MemWal — Privacy-first AI memory SDK with Ed25519 delegate key auth",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -51,12 +51,6 @@
|
|
|
51
51
|
"zod": {
|
|
52
52
|
"optional": true
|
|
53
53
|
},
|
|
54
|
-
"@mysten/sui": {
|
|
55
|
-
"optional": true
|
|
56
|
-
},
|
|
57
|
-
"@mysten/seal": {
|
|
58
|
-
"optional": true
|
|
59
|
-
},
|
|
60
54
|
"@mysten/walrus": {
|
|
61
55
|
"optional": true
|
|
62
56
|
}
|
|
@@ -78,10 +72,11 @@
|
|
|
78
72
|
"license": "Apache-2.0",
|
|
79
73
|
"repository": {
|
|
80
74
|
"type": "git",
|
|
81
|
-
"url": "https://github.com/MystenLabs/MemWal.git",
|
|
75
|
+
"url": "git+https://github.com/MystenLabs/MemWal.git",
|
|
82
76
|
"directory": "packages/sdk"
|
|
83
77
|
},
|
|
84
78
|
"publishConfig": {
|
|
85
79
|
"access": "public",
|
|
86
80
|
"registry": "https://registry.npmjs.org/"
|
|
87
|
-
}
|
|
81
|
+
}
|
|
82
|
+
}
|